From 4e47d1e1eec5aafdc5410ea664f5b2d516c4b663 Mon Sep 17 00:00:00 2001 From: Brian Waldon Date: Tue, 4 Mar 2014 16:36:05 -0800 Subject: [PATCH] initial import --- .gitignore | 3 + Documentation/coreos-init.md | 51 + build | 6 + cloudinit/cloud_config.go | 58 + cloudinit/cloud_config_test.go | 78 + cloudinit/etcd.go | 25 + cloudinit/metadata_service.go | 31 + cloudinit/ssh_key.go | 59 + cloudinit/systemd.go | 41 + cloudinit/user_data.go | 30 + cloudinit/workspace.go | 61 + coreos-cloudinit.go | 62 + src/github.com/coreos/coreos-cloudinit | 1 + src/github.com/coreos/go-systemd | 1 + src/github.com/guelfey/go.dbus | 1 + src/launchpad.net/goyaml/.bzr/README | 3 + src/launchpad.net/goyaml/.bzr/branch-format | 1 + .../goyaml/.bzr/branch/branch.conf | 1 + src/launchpad.net/goyaml/.bzr/branch/format | 1 + .../goyaml/.bzr/branch/last-revision | 1 + src/launchpad.net/goyaml/.bzr/branch/tags | 0 .../goyaml/.bzr/checkout/conflicts | 1 + .../goyaml/.bzr/checkout/dirstate | Bin 0 -> 4743 bytes src/launchpad.net/goyaml/.bzr/checkout/format | 1 + src/launchpad.net/goyaml/.bzr/checkout/views | 0 .../goyaml/.bzr/repository/format | 1 + .../b169e2681d8f14f61485de84c0983197.cix | Bin 0 -> 3719 bytes .../b169e2681d8f14f61485de84c0983197.iix | Bin 0 -> 3305 bytes .../b169e2681d8f14f61485de84c0983197.rix | Bin 0 -> 3403 bytes .../b169e2681d8f14f61485de84c0983197.six | 5 + .../b169e2681d8f14f61485de84c0983197.tix | Bin 0 -> 18129 bytes .../goyaml/.bzr/repository/pack-names | 6 + .../b169e2681d8f14f61485de84c0983197.pack | Bin 0 -> 583124 bytes src/launchpad.net/goyaml/.bzrignore | 14 + src/launchpad.net/goyaml/.lbox | 1 + src/launchpad.net/goyaml/.lbox.check | 20 + src/launchpad.net/goyaml/LICENSE | 185 ++ src/launchpad.net/goyaml/LICENSE.libyaml | 19 + src/launchpad.net/goyaml/Makefile | 39 + src/launchpad.net/goyaml/apic.go | 742 +++++ src/launchpad.net/goyaml/decode.go | 473 +++ src/launchpad.net/goyaml/decode_test.go | 519 ++++ src/launchpad.net/goyaml/emitterc.go | 1682 ++++++++++ src/launchpad.net/goyaml/encode.go | 221 ++ src/launchpad.net/goyaml/encode_test.go | 379 +++ src/launchpad.net/goyaml/goyaml.go | 300 ++ src/launchpad.net/goyaml/parserc.go | 1096 +++++++ src/launchpad.net/goyaml/readerc.go | 391 +++ src/launchpad.net/goyaml/resolve.go | 155 + src/launchpad.net/goyaml/scannerc.go | 2710 +++++++++++++++++ src/launchpad.net/goyaml/sorter.go | 104 + src/launchpad.net/goyaml/suite_test.go | 12 + src/launchpad.net/goyaml/writerc.go | 89 + src/launchpad.net/goyaml/yamlh.go | 712 +++++ src/launchpad.net/goyaml/yamlprivateh.go | 173 ++ 55 files changed, 10565 insertions(+) create mode 100644 .gitignore create mode 100644 Documentation/coreos-init.md create mode 100755 build create mode 100644 cloudinit/cloud_config.go create mode 100644 cloudinit/cloud_config_test.go create mode 100644 cloudinit/etcd.go create mode 100644 cloudinit/metadata_service.go create mode 100644 cloudinit/ssh_key.go create mode 100644 cloudinit/systemd.go create mode 100644 cloudinit/user_data.go create mode 100644 cloudinit/workspace.go create mode 100644 coreos-cloudinit.go create mode 120000 src/github.com/coreos/coreos-cloudinit create mode 160000 src/github.com/coreos/go-systemd create mode 160000 src/github.com/guelfey/go.dbus create mode 100644 src/launchpad.net/goyaml/.bzr/README create mode 100644 src/launchpad.net/goyaml/.bzr/branch-format create mode 100644 src/launchpad.net/goyaml/.bzr/branch/branch.conf create mode 100644 src/launchpad.net/goyaml/.bzr/branch/format create mode 100644 src/launchpad.net/goyaml/.bzr/branch/last-revision create mode 100644 src/launchpad.net/goyaml/.bzr/branch/tags create mode 100644 src/launchpad.net/goyaml/.bzr/checkout/conflicts create mode 100644 src/launchpad.net/goyaml/.bzr/checkout/dirstate create mode 100644 src/launchpad.net/goyaml/.bzr/checkout/format create mode 100644 src/launchpad.net/goyaml/.bzr/checkout/views create mode 100644 src/launchpad.net/goyaml/.bzr/repository/format create mode 100644 src/launchpad.net/goyaml/.bzr/repository/indices/b169e2681d8f14f61485de84c0983197.cix create mode 100644 src/launchpad.net/goyaml/.bzr/repository/indices/b169e2681d8f14f61485de84c0983197.iix create mode 100644 src/launchpad.net/goyaml/.bzr/repository/indices/b169e2681d8f14f61485de84c0983197.rix create mode 100644 src/launchpad.net/goyaml/.bzr/repository/indices/b169e2681d8f14f61485de84c0983197.six create mode 100644 src/launchpad.net/goyaml/.bzr/repository/indices/b169e2681d8f14f61485de84c0983197.tix create mode 100644 src/launchpad.net/goyaml/.bzr/repository/pack-names create mode 100644 src/launchpad.net/goyaml/.bzr/repository/packs/b169e2681d8f14f61485de84c0983197.pack create mode 100644 src/launchpad.net/goyaml/.bzrignore create mode 100644 src/launchpad.net/goyaml/.lbox create mode 100755 src/launchpad.net/goyaml/.lbox.check create mode 100644 src/launchpad.net/goyaml/LICENSE create mode 100644 src/launchpad.net/goyaml/LICENSE.libyaml create mode 100644 src/launchpad.net/goyaml/Makefile create mode 100644 src/launchpad.net/goyaml/apic.go create mode 100644 src/launchpad.net/goyaml/decode.go create mode 100644 src/launchpad.net/goyaml/decode_test.go create mode 100644 src/launchpad.net/goyaml/emitterc.go create mode 100644 src/launchpad.net/goyaml/encode.go create mode 100644 src/launchpad.net/goyaml/encode_test.go create mode 100644 src/launchpad.net/goyaml/goyaml.go create mode 100644 src/launchpad.net/goyaml/parserc.go create mode 100644 src/launchpad.net/goyaml/readerc.go create mode 100644 src/launchpad.net/goyaml/resolve.go create mode 100644 src/launchpad.net/goyaml/scannerc.go create mode 100644 src/launchpad.net/goyaml/sorter.go create mode 100644 src/launchpad.net/goyaml/suite_test.go create mode 100644 src/launchpad.net/goyaml/writerc.go create mode 100644 src/launchpad.net/goyaml/yamlh.go create mode 100644 src/launchpad.net/goyaml/yamlprivateh.go diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8db26f2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.swp +bin/ +pkg/ diff --git a/Documentation/coreos-init.md b/Documentation/coreos-init.md new file mode 100644 index 0000000..0284825 --- /dev/null +++ b/Documentation/coreos-init.md @@ -0,0 +1,51 @@ +# coreos-init + +CoreOS allows a user to customize EC2 instances by providing either an executable script or a cloud-config document as instance user-data. See below to learn how to use these features. + +## cloud-config + +Only a subset of [cloud-config functionality][cloud-config] is implemented. A set of custom parameters were added to the cloud-config format that are specific to CoreOS. + +[cloud-config]: http://cloudinit.readthedocs.org/en/latest/topics/format.html#cloud-config-data + +### Supported cloud-config Parameters + +#### ssh_authorized_keys + +Provided public SSH keys will be authorized for the `core` user. + +### Custom cloud-config Parameters + +#### coreos.etcd.discovery_url + +The value of `coreos.etcd.discovery_url` will be used to discover the instance's etcd peers using the [etcd discovery protocol][disco-proto]. Usage of the [public discovery service][disco-service] is encouraged. + +[disco-proto]: https://github.com/coreos/etcd/blob/master/Documentation/discovery-protocol.md +[disco-service]: http://discovery.etcd.io + + +## user-data Script + +Simply set your user-data to a script where the first line is a shebang: + +``` +#!/bin/bash + +echo 'Hello, world!' +``` + +## Examples + +### Inject an SSH key and bootstrap an etcd cluster using cloud-config + +``` +#cloud-config + +coreos: + etcd: + discovery_url: https://discovery.etcd.io/827c73219eeb2fa5530027c37bf18877 + +ssh_authorized_keys: + - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0g+ZTxC7weoIJLUafOgrm+h... +``` + diff --git a/build b/build new file mode 100755 index 0000000..46f7d46 --- /dev/null +++ b/build @@ -0,0 +1,6 @@ +#!/bin/bash -e + +export GOBIN=${PWD}/bin +export GOPATH=${PWD} + +go build -o bin/coreos-cloudinit github.com/coreos/coreos-cloudinit diff --git a/cloudinit/cloud_config.go b/cloudinit/cloud_config.go new file mode 100644 index 0000000..815bbad --- /dev/null +++ b/cloudinit/cloud_config.go @@ -0,0 +1,58 @@ +package cloudinit + +import ( + "log" + + "launchpad.net/goyaml" +) + +type CloudConfig struct { + SSH_Authorized_Keys []string + Coreos struct{Etcd struct{ Discovery_URL string }; Fleet struct{ Autostart bool } } +} + +func NewCloudConfig(contents []byte) (*CloudConfig, error) { + var cfg CloudConfig + err := goyaml.Unmarshal(contents, &cfg) + return &cfg, err +} + +func (cc CloudConfig) String() string { + bytes, err := goyaml.Marshal(cc) + if err == nil { + return string(bytes) + } else { + return "" + } +} + +func ResolveCloudConfig(cfg CloudConfig) error { + if len(cfg.SSH_Authorized_Keys) > 0 { + err := AuthorizeSSHKeys(cfg.SSH_Authorized_Keys) + if err == nil { + log.Printf("Authorized SSH keys for core user") + } else { + return err + } + } + + if cfg.Coreos.Etcd.Discovery_URL != "" { + err := PersistEtcdDiscoveryURL(cfg.Coreos.Etcd.Discovery_URL) + if err == nil { + log.Printf("Consumed etcd discovery url") + } else { + log.Fatalf("Failed to persist etcd discovery url to filesystem: %v", err) + } + } + + if cfg.Coreos.Fleet.Autostart { + err := StartUnit("fleet.service") + if err == nil { + log.Printf("Started fleet service.") + } else { + return err + } + } + + return nil +} diff --git a/cloudinit/cloud_config_test.go b/cloudinit/cloud_config_test.go new file mode 100644 index 0000000..c002402 --- /dev/null +++ b/cloudinit/cloud_config_test.go @@ -0,0 +1,78 @@ +package cloudinit + +import ( + "testing" +) + +// Assert that the parsing of a cloud config file "generally works" +func TestCloudConfigEmpty(t *testing.T) { + cfg, err := NewCloudConfig([]byte{}) + if err != nil { + t.Fatalf("Encountered unexpected error :%v", err) + } + + keys := cfg.SSH_Authorized_Keys + if len(keys) != 0 { + t.Error("Parsed incorrect number of SSH keys") + } + + if cfg.Coreos.Etcd.Discovery_URL != "" { + t.Error("Parsed incorrect value of discovery url") + } + + if cfg.Coreos.Fleet.Autostart { + t.Error("Expected AutostartFleet not to be defined") + } +} + +// Assert that the parsing of a cloud config file "generally works" +func TestCloudConfig(t *testing.T) { + contents := []byte(` +coreos: + etcd: + discovery_url: "https://discovery.etcd.io/827c73219eeb2fa5530027c37bf18877" + fleet: + autostart: Yes +ssh_authorized_keys: + - foobar + - foobaz +`) + cfg, err := NewCloudConfig(contents) + if err != nil { + t.Fatalf("Encountered unexpected error :%v", err) + } + + keys := cfg.SSH_Authorized_Keys + if len(keys) != 2 { + t.Error("Parsed incorrect number of SSH keys") + } else if keys[0] != "foobar" { + t.Error("Expected first SSH key to be 'foobar'") + } else if keys[1] != "foobaz" { + t.Error("Expected first SSH key to be 'foobaz'") + } + + if cfg.Coreos.Etcd.Discovery_URL != "https://discovery.etcd.io/827c73219eeb2fa5530027c37bf18877" { + t.Error("Failed to parse etcd discovery url") + } + + if !cfg.Coreos.Fleet.Autostart { + t.Error("Expected AutostartFleet to be true") + } +} + +// Assert that our interface conversion doesn't panic +func TestCloudConfigKeysNotList(t *testing.T) { + contents := []byte(` +ssh_authorized_keys: + - foo: bar +`) + cfg, err := NewCloudConfig(contents) + if err != nil { + t.Fatalf("Encountered unexpected error :%v", err) + } + + keys := cfg.SSH_Authorized_Keys + if len(keys) != 0 { + t.Error("Parsed incorrect number of SSH keys") + } +} diff --git a/cloudinit/etcd.go b/cloudinit/etcd.go new file mode 100644 index 0000000..1e0498e --- /dev/null +++ b/cloudinit/etcd.go @@ -0,0 +1,25 @@ +package cloudinit + +import ( + "io/ioutil" + "log" + "os" + "path" +) + +const ( + etcdDiscoveryPath = "/var/run/etcd/bootstrap.disco" +) + +func PersistEtcdDiscoveryURL(url string) error { + dir := path.Dir(etcdDiscoveryPath) + if _, err := os.Stat(dir); err != nil { + log.Printf("Creating directory /var/run/etcd") + err := os.MkdirAll(dir, os.FileMode(0644)) + if err != nil { + return err + } + } + + return ioutil.WriteFile(etcdDiscoveryPath, []byte(url), os.FileMode(0644)) +} diff --git a/cloudinit/metadata_service.go b/cloudinit/metadata_service.go new file mode 100644 index 0000000..201bf4a --- /dev/null +++ b/cloudinit/metadata_service.go @@ -0,0 +1,31 @@ +package cloudinit + +import ( + "io/ioutil" + "net/http" +) + +type metadataService struct { + client http.Client +} + +func NewMetadataService() *metadataService { + return &metadataService{http.Client{}} +} + +func (ms *metadataService) UserData() ([]byte, error) { + resp, err := ms.client.Get("http://169.254.169.254/2012-01-12/user-data") + if err != nil { + return []byte{}, err + } + + defer resp.Body.Close() + respBytes, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + return respBytes, nil +} + + diff --git a/cloudinit/ssh_key.go b/cloudinit/ssh_key.go new file mode 100644 index 0000000..fb89219 --- /dev/null +++ b/cloudinit/ssh_key.go @@ -0,0 +1,59 @@ +package cloudinit + +import ( + "fmt" + "io" + "io/ioutil" + "os/exec" + "strings" +) + +// Add the provide SSH public key to the core user's list of +// authorized keys +func AuthorizeSSHKeys(keys []string) error { + for i, key := range keys { + keys[i] = strings.TrimSpace(key) + } + + // join all keys with newlines, ensuring the resulting string + // also ends with a newline + joined := fmt.Sprintf("%s\n", strings.Join(keys, "\n")) + + cmd := exec.Command("update-ssh-keys", "-u", "core", "-a", "coreos-init") + stdin, err := cmd.StdinPipe() + if err != nil { + return err + } + + stdout, err := cmd.StdoutPipe() + if err != nil { + return err + } + + stderr, err := cmd.StderrPipe() + if err != nil { + return err + } + + err = cmd.Start() + if err != nil { + stdin.Close() + return err + } + + _, err = io.WriteString(stdin, joined) + if err != nil { + return err + } + + stdin.Close() + stdoutBytes, _ := ioutil.ReadAll(stdout) + stderrBytes, _ := ioutil.ReadAll(stderr) + + err = cmd.Wait() + if err != nil { + return fmt.Errorf("Call to update-ssh-keys failed with %v: %s %s", err, string(stdoutBytes), string(stderrBytes)) + } + + return nil +} diff --git a/cloudinit/systemd.go b/cloudinit/systemd.go new file mode 100644 index 0000000..2b14a04 --- /dev/null +++ b/cloudinit/systemd.go @@ -0,0 +1,41 @@ +package cloudinit + +import ( + "fmt" + "log" + "path" + + "github.com/coreos/go-systemd/dbus" +) + +type Script []byte + +func StartUnit(name string) error { + conn, err := dbus.New() + if err != nil { + return err + } + + _, err = conn.StartUnit(name, "replace") + return err +} + +func ExecuteScript(scriptPath string) error { + props := []dbus.Property{ + dbus.PropDescription("Unit generated and executed by coreos-init on behalf of user"), + dbus.PropExecStart([]string{"/bin/bash", scriptPath}, false), + } + + base := path.Base(scriptPath) + name := fmt.Sprintf("coreos-init-%s.service", base) + + log.Printf("Creating transient systemd unit '%s'", name) + + conn, err := dbus.New() + if err != nil { + return err + } + + _, err = conn.StartTransientUnit(name, "replace", props...) + return err +} diff --git a/cloudinit/user_data.go b/cloudinit/user_data.go new file mode 100644 index 0000000..33acdec --- /dev/null +++ b/cloudinit/user_data.go @@ -0,0 +1,30 @@ +package cloudinit + +import ( + "bufio" + "bytes" + "fmt" + "log" + "strings" +) + +func ParseUserData(contents []byte) (interface{}, error) { + bytereader := bytes.NewReader(contents) + bufreader := bufio.NewReader(bytereader) + header, _ := bufreader.ReadString('\n') + + if strings.HasPrefix(header, "#!") { + log.Printf("Parsing user-data as script") + return Script(contents), nil + + } else if header == "#cloud-config\n" { + log.Printf("Parsing user-data as cloud-config") + cfg, err := NewCloudConfig(contents) + if err != nil { + log.Fatal(err.Error()) + } + return *cfg, nil + } else { + return nil, fmt.Errorf("Unrecognized user-data header: %s", header) + } +} diff --git a/cloudinit/workspace.go b/cloudinit/workspace.go new file mode 100644 index 0000000..c531439 --- /dev/null +++ b/cloudinit/workspace.go @@ -0,0 +1,61 @@ +package cloudinit + +import ( + "fmt" + "io/ioutil" + "os" + "path" +) + +func PrepWorkspace(workspace string) error { + // Ensure workspace exists and is a directory + info, err := os.Stat(workspace) + if err == nil { + if !info.IsDir() { + return fmt.Errorf("%s is not a directory", workspace) + } + } else { + err = os.MkdirAll(workspace, 0644) + if err != nil { + return err + } + } + + // Ensure scripts dir in workspace exists and is a directory + scripts := path.Join(workspace, "scripts") + info, err = os.Stat(scripts) + if err == nil { + if !info.IsDir() { + return fmt.Errorf("%s is not a directory", scripts) + } + } else { + err = os.Mkdir(scripts, 0644) + if err != nil { + return err + } + } + + return nil +} + +func PersistScriptInWorkspace(script Script, workspace string) (string, error) { + scriptsDir := path.Join(workspace, "scripts") + f, err := ioutil.TempFile(scriptsDir, "") + if err != nil { + return "", err + } + defer f.Close() + + f.Chmod(0744) + + _, err = f.Write(script) + if err != nil { + return "", err + } + + // Ensure script has been written to disk before returning, as the + // next natural thing to do is execute it + f.Sync() + + return f.Name(), nil +} diff --git a/coreos-cloudinit.go b/coreos-cloudinit.go new file mode 100644 index 0000000..7499383 --- /dev/null +++ b/coreos-cloudinit.go @@ -0,0 +1,62 @@ +package main + +import ( + "flag" + "io/ioutil" + "log" + + "github.com/coreos/coreos-cloudinit/cloudinit" +) + +func main() { + var userdata []byte + var err error + + var file string + flag.StringVar(&file, "from-file", "", "Read user-data from file rather than metadata service") + + var workspace string + flag.StringVar(&workspace, "workspace", "/var/lib/coreos-cloudinit", "Base directory coreos-cloudinit should use to store data") + + flag.Parse() + + if file != "" { + log.Printf("Reading user-data from file: %s", file) + userdata, err = ioutil.ReadFile(file) + if err != nil { + log.Fatal(err.Error()) + } + } else { + log.Printf("Reading user-data from metadata service") + svc := cloudinit.NewMetadataService() + userdata, err = svc.UserData() + if err != nil { + log.Fatal(err.Error()) + } + } + + parsed, err := cloudinit.ParseUserData(userdata) + if err != nil { + log.Fatalf("Failed parsing user-data: %v", err) + } + + err = cloudinit.PrepWorkspace(workspace) + if err != nil { + log.Fatalf("Failed preparing workspace: %v", err) + } + + switch t := parsed.(type) { + case cloudinit.CloudConfig: + err = cloudinit.ResolveCloudConfig(t) + case cloudinit.Script: + var path string + path, err = cloudinit.PersistScriptInWorkspace(t, workspace) + if err == nil { + err = cloudinit.ExecuteScript(path) + } + } + + if err != nil { + log.Fatalf("Failed resolving user-data: %v", err) + } +} diff --git a/src/github.com/coreos/coreos-cloudinit b/src/github.com/coreos/coreos-cloudinit new file mode 120000 index 0000000..a8a4f8c --- /dev/null +++ b/src/github.com/coreos/coreos-cloudinit @@ -0,0 +1 @@ +../../.. \ No newline at end of file diff --git a/src/github.com/coreos/go-systemd b/src/github.com/coreos/go-systemd new file mode 160000 index 0000000..8abd78f --- /dev/null +++ b/src/github.com/coreos/go-systemd @@ -0,0 +1 @@ +Subproject commit 8abd78f0ac040cd0e8972866f912c03ba78945ee diff --git a/src/github.com/guelfey/go.dbus b/src/github.com/guelfey/go.dbus new file mode 160000 index 0000000..f6a3a23 --- /dev/null +++ b/src/github.com/guelfey/go.dbus @@ -0,0 +1 @@ +Subproject commit f6a3a2366cc39b8479cadc499d3c735fb10fbdda diff --git a/src/launchpad.net/goyaml/.bzr/README b/src/launchpad.net/goyaml/.bzr/README new file mode 100644 index 0000000..f82dc1c --- /dev/null +++ b/src/launchpad.net/goyaml/.bzr/README @@ -0,0 +1,3 @@ +This is a Bazaar control directory. +Do not change any files in this directory. +See http://bazaar.canonical.com/ for more information about Bazaar. diff --git a/src/launchpad.net/goyaml/.bzr/branch-format b/src/launchpad.net/goyaml/.bzr/branch-format new file mode 100644 index 0000000..9eb09b7 --- /dev/null +++ b/src/launchpad.net/goyaml/.bzr/branch-format @@ -0,0 +1 @@ +Bazaar-NG meta directory, format 1 diff --git a/src/launchpad.net/goyaml/.bzr/branch/branch.conf b/src/launchpad.net/goyaml/.bzr/branch/branch.conf new file mode 100644 index 0000000..dae50f0 --- /dev/null +++ b/src/launchpad.net/goyaml/.bzr/branch/branch.conf @@ -0,0 +1 @@ +parent_location = http://bazaar.launchpad.net/~goyaml/goyaml/trunk/ diff --git a/src/launchpad.net/goyaml/.bzr/branch/format b/src/launchpad.net/goyaml/.bzr/branch/format new file mode 100644 index 0000000..dc392f4 --- /dev/null +++ b/src/launchpad.net/goyaml/.bzr/branch/format @@ -0,0 +1 @@ +Bazaar Branch Format 7 (needs bzr 1.6) diff --git a/src/launchpad.net/goyaml/.bzr/branch/last-revision b/src/launchpad.net/goyaml/.bzr/branch/last-revision new file mode 100644 index 0000000..60d7078 --- /dev/null +++ b/src/launchpad.net/goyaml/.bzr/branch/last-revision @@ -0,0 +1 @@ +50 gustavo@niemeyer.net-20131114120802-abe042syx64z2m7s diff --git a/src/launchpad.net/goyaml/.bzr/branch/tags b/src/launchpad.net/goyaml/.bzr/branch/tags new file mode 100644 index 0000000..e69de29 diff --git a/src/launchpad.net/goyaml/.bzr/checkout/conflicts b/src/launchpad.net/goyaml/.bzr/checkout/conflicts new file mode 100644 index 0000000..0dc2d3a --- /dev/null +++ b/src/launchpad.net/goyaml/.bzr/checkout/conflicts @@ -0,0 +1 @@ +BZR conflict list format 1 diff --git a/src/launchpad.net/goyaml/.bzr/checkout/dirstate b/src/launchpad.net/goyaml/.bzr/checkout/dirstate new file mode 100644 index 0000000000000000000000000000000000000000..b16c9781a99d2b56628aa8726a40ef781e3d6190 GIT binary patch literal 4743 zcmbtY*={2_60GO`3IqFG2ARC)se#2j3^2Pd`vC@zq*RvbE}dV$Ngdte9kgs=4cVd$ z(avB-L)ZqNv z3y5#LTJ31(zW?4e*y0JN*AAB&7#Ey#$$?o0wGYT7%%`K4XK2k_eXAIKSJg5hzD<39 z*})lSWe4Z1_FV1vJJamXx{LgfYF?#^Hg(nUldt>xepT1~zW@`pJZU>jYdxC-TlMN( zYI+UlsabXXgw>B#!E@Uun38p8-KKBsdd{P=Y&lSM`HR)%%GxYcj>e+pN@Vmb8?6M7 zSqTi>b0dNfEL7ZR!utshI%ZZcN4D`QjxKaV;lNoReqG}2`#h06=$yYY$L|Q zF5oou{i-Wx`$Y97854aFTt!F{Fa;+gcMh}0C{Tfy4mDO_9u)th94_mV*==@$Z@TxE zy9o<9s@GEYYg}X8Tp(PR7g{j^nlMYoYty#Ppc{4CPva>a;vLB8bCTqWJF6oI$*fIL zD?%X^pv}troMpxwgib2Eir!J3s`q}~efLxF^SW-a>2UiR`}Si+uAWB4!Z|XB4Ilf7 z7c77N@z3A?{h!~fZ4%mTPXHkm;P`ag4ch@3@07On<@fx^2SAx7+{0a#gM3 zwa~p;*yyBM+Qm1kT0g<8$an+}A!Xq}aqF@+0?9ylkdiscKv>PtSDY#PfLkQgVm*xd zSudhc5m7pZ zE^?xka*x%mm|}Dsz-tI`Jq-M0ro25Z=L-lwH1T!SSM>Z=7FQz5a&F3US6gJTB8kqU zcKbuyJ;f@ksBkZWQ`|-8gcsWIWSC3ZFi1+GgqSqZkAr;F3c)mYTmmRpXO>5^-%Udn z0p0Gsv?5{b6BZnUpJtjJS0HzbCcFAOrQ{RMU>YQ8Ib==tCqV?TQfZZ}ab-AhnPc!I zn?fmg2!t3VI0GqpJ)83c-8l!=7is@Rr!`M|g?GEq{{Oqf7yK}_ob?0Y*lLji?tvn)7Wcy?QV z;2QOohM}ns%drnfeL^(NlEwZht~vS(%!wqmW8}BVE8(26iDm0haTyHF$c(lkcUF%q z?4CEIboJgGTc($7vzuLuYJWk~-MNPM)!m92os{5E50Y;%?oK$khU4g;0-|+}(q!^p z2aW-W+yu!{qEMRJlN7k1nGcm>`XP>sW{d(5buwNn-mqzGHgn4^nz>eg=T`Oc<)?_A zp<0gKBu>XpNyRvoX|P+vSc;ybkUrIId215zTe^K{LgljkL7{kLS}tZWXgA-osN= z<5Eb@XqpJ5)Wu8&Yk8KIQH#8w2l=&fNmLZs&10^S_^BcXvR;~g9F{E^=DLl?`7&iD z^yy{**X7r+JVP>MBpB~ZP%LtV6eq0#kyVUAE1NT*A}t63w+9H+J32E*drg-97I2o)KF-PTv1xm*X%JiqU zJPc!mgaMF+fT_o|?oVRYfX#N9mQ`WcOxo&hZMm(#)|Y2;jHg^&oD9gvgko7|1mkVy zhEjkN(vd5$ta4=x=*NAzWdI@TsW%bwIIlSm?HCRhH2p+Frs#gYuS!>dIqm=`FR6MP zM=p?rj6fnnUa&xNvf|Q_ zT&8|Sr#s*<;NLx&EEyzs(g3SlyCgQO2Go0Y26gGpVIoY|0B~J?;MryV6P%M?r{k`F zx6z~pFhA8EM;44yBB7!4Hx_)#5u8DcXdM#sZfiA+?2s$GQpwR%G3+IJplmp7J{MEId#tYS@sW4Yl_{V9_ zmw6WM$c|X#Qpz8uW=|j1{DgD+#oL!)sVCAVePR$(rhExn1kbYvNs{!=^FX$SntLRJ Ph_RARi^r%QT?GCM{Ext} literal 0 HcmV?d00001 diff --git a/src/launchpad.net/goyaml/.bzr/checkout/format b/src/launchpad.net/goyaml/.bzr/checkout/format new file mode 100644 index 0000000..e0261c7 --- /dev/null +++ b/src/launchpad.net/goyaml/.bzr/checkout/format @@ -0,0 +1 @@ +Bazaar Working Tree Format 6 (bzr 1.14) diff --git a/src/launchpad.net/goyaml/.bzr/checkout/views b/src/launchpad.net/goyaml/.bzr/checkout/views new file mode 100644 index 0000000..e69de29 diff --git a/src/launchpad.net/goyaml/.bzr/repository/format b/src/launchpad.net/goyaml/.bzr/repository/format new file mode 100644 index 0000000..b200528 --- /dev/null +++ b/src/launchpad.net/goyaml/.bzr/repository/format @@ -0,0 +1 @@ +Bazaar repository format 2a (needs bzr 1.16 or later) diff --git a/src/launchpad.net/goyaml/.bzr/repository/indices/b169e2681d8f14f61485de84c0983197.cix b/src/launchpad.net/goyaml/.bzr/repository/indices/b169e2681d8f14f61485de84c0983197.cix new file mode 100644 index 0000000000000000000000000000000000000000..6eafadbf22395fae04d00b737e323852eb8d0406 GIT binary patch literal 3719 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 literal 0 HcmV?d00001 diff --git a/src/launchpad.net/goyaml/.bzr/repository/indices/b169e2681d8f14f61485de84c0983197.rix b/src/launchpad.net/goyaml/.bzr/repository/indices/b169e2681d8f14f61485de84c0983197.rix new file mode 100644 index 0000000000000000000000000000000000000000..d45bd293bea0860f3401ff749fa08300bebde081 GIT binary patch literal 3403 zcmV-R4Ycw?D^zl2Wgtg#VQ^?5Np56icpx$gZf|5|Uvgz;UuN z;#vZfamJXSz%^Bb=Y0ufH|eyCYuC72F^^NUxIbN$wb`Bxzg;%H|3npzic?_;0LzAj zP258an#EER|%;}R6W+LY^(cRY??xR`yc+E3cP=#(9c;=j4~=1 zP@tTMU73C;)u>lmIQhJN9tBiciKCJH>QU%M$+XcrlF7ryU7MDjIi1uX-@{8z4~ZaN z;>>6+NIj%>?#6zgYcd0m2Ud|y-5UEoigJv{HgON^BLt>_n4o-wu9{pW5HE{f?X;jtGkS5LA&}A z|JB(mJZ!gz#3f!+K{6xLZA$Jr&Br2|!uV5XFM5m{N6uLokIRf=oNP-{HA7J(qoB{k z*-QLaXAh5H9EA?29^NMy)=*=sPV#mwhD3^_4R*bAXD{_ME;;W6yu=&92-`QE#Jr85 z%C~}_ZzF=v9v(EuQNY#YV`)l89v$OP-N#Fx6`FSP693iN!&7Sxi7+1fvc*91rp)j8 zXx0+j*u>xhf8zYXYfIH3ae?RfrOACT>&Vh*Uwhh4d=BH!oISke>W~QG;dLoY;$&%- zY1!$xJ$5k3et|!6_VDu6^UsfZFM5po zcm*Lm7={}MT)bfGAJ#yemKD{!4z-o-{GieXuBctgOLCu5GQ5dvt18)vro^^ zf*Wx5qQ_}JG9Z9gASrH!v42j}V-dYDoIyR#RcNynaQ51cwEAeh0X*)RFpD*2QJp`h zyQ`aOs^hq+L&uDOvxk4b`G;L3l;TGbTsmM(Bo?m6ow;tyX&GG>IBSH&J-o2|khsDN zz>Ra34J+?knmp2d#+Bp}|JB*UgB6Fw&p!YF0RR7-m`SdqFc3g{-BRD7FM#A3d)HTC z3;{!!%yjxL=YNGPz6&WE#LDlLT`re>g%{F9Nu?YULmTU($!2~3d{~3_6VJHv-&o_B%Y55OWt2?KAtyT(9cjBZxqpO5 zrz{xg+mu27{WWnxXSnnd4U0y=*;X#2Y&1tEOsgF391Qdg&-^*#B`)zWRzu}4RF}%bDo-xgJO&=^@(RO%;RE3xsst@)`G|O9&Suf=MxV#k$*{C;W=k2>Up}3d~ddVs0(eYEBw#S zZ+Kz8C9d!S3T(uuM?N}R9TP3&aLYfMd?a6yK;Kpj)(XBHd9{ROW)e1`f%3lREh{F+ z)ktW&Y`3c^`#I1TUJ?CQ)9`A2qp5^zc;{R;K{KAtbRM@Ve2k;MFEoc!6z~XI5Gd@- zSLlA-Z+exgk)&yB7QQ;7zArTK@JleHTQpSavGYl>;%?`0zWu5nRrfC$(`2fmwzzl2 z`QQy`xUa*-QABZPGo7`o-N~HBr4A+u8sy7Y`}aMqO}M1NIM5MmVPKr;Xph0{dP+A} zAB#XH3kmduOC_ELS8(XtX>{m3gYI|L<(5GE65i6N@d+1RMTgS}j|RPJ7t+gu~u_8eniHVI0j&)UeTxf)6n*`QEd%osXrN9u|X#jZe5_@zVf>EB`bqNhH~B zm1wu5tj9;s(a6KbC!A~bH2D1=00960gqcgSs~`}D=XVu%15_bTS&o_*MNy;pNLGJZ z28YR^8Kg2v)%Sr`_um~HZm6P~EVlWswzA)z!xMa_M+?+A!Xe%S1N7wO{ecN-U%TbO z8V|z)>o1>k>&00S(9x?q694MYnD z`AaE(@^W+bEc)-_ISx-5M>tG;!5{~}ze#fpMJuM+%m*FVd7|*7afCCNFm8h^TyRC& zYm%?x64U26eA}YsHEkT>Pz{1X4i3Rr5U#bOr9J2=uqQM{w=Y=8H za9ZeAkL%c7v%S-M6x2Avm1Myn1J{gkPO7?m3R$;i>1FNCJp51N2#16m3@|vS^j^g& za&3C$&Kz=hxa%d;>pRpq78#>tFu>vWk`cP291C5qZ8hCf;y!B(o;Hqf=qbS<124Iv zhR}}HGcT&`ZF@^UPaK{yj&S%@sIghNE(-FTmP2oH>c&mX z;fm^7ZS(lh=Zkf@w>@DT;S^@^+u+|100030|D2lJa)TfchVT0neF0|>+tQqV3cI^uDv0y)+_JZ=WE2pW5h>ur{H=G1c>up zoRd5oE3X_Qy;3IcyhH;oTD>AY7Gm=t4*h7rMu^2W3jqw7e_n~|mUX^sAu5Mm4v5X; z6@aKP!$35ep-{u+aK*7An+I7@J1updm)%riHOOD&C79S6jymNl^5-> zG5{ey#G&Ne2$JFg3MuGA(&&ZbMm&AuhGUOTE@&w3hdSIIdyRg5Ami8a@f0r(R* z_RwIOuCI5+3+?_b9}WTVxyA0F!k_x+S0&!i>G4B=Y|@g!?rx{V6G&oJY0pL>}DGmW7 z3%d{FORh`I7hU*tr^Nw4l6%u~7z>di4*-fW?Co?2Wo!kOhNbGK_L^Inqz~Zh!(exk zPwbxq`Uz^zB!Q}S-J`i0SN^zJEr(P5M6i4Hm5dZ807SSry`;taMr~EI-VN*oz`xu( z5dyc7;_?ds0RR82TR{$kAP~Hp_!N>w1@SqywzW01fFiN4FVsUhR3x+?AhWZ{u$!4p zGb9oj2zPF~+>cJ;=8ZkXTS)Oz{)7C78wc-Dp{8ur*=#4kVfD-|XLe0NoJ}2wi#X94 zo(0(+(}RH_uj$y`ZMghN6b1qSNOniIRIQW))k2NaUi>70-ZL#(;ra-60N#C$*%w(s z5t(j+joS2!nydR*{{@JHu<{ZEq{L0xAmE1gLJhc8M(ArCBj3677%7Q!z6p*4V#kRJ zEpk$(erSCb{9sq=eIQ$0=IOa!E2=qLF=`03=FG`6O;1tE35L%GqcKxS!IR83rG$z1uee; hIfp2RU|%*zc5)yTsdzk(w1fvV$PSKLE&$9sR&;=Jj}!m^ literal 0 HcmV?d00001 diff --git a/src/launchpad.net/goyaml/.bzr/repository/indices/b169e2681d8f14f61485de84c0983197.six b/src/launchpad.net/goyaml/.bzr/repository/indices/b169e2681d8f14f61485de84c0983197.six new file mode 100644 index 0000000..a2afde6 --- /dev/null +++ b/src/launchpad.net/goyaml/.bzr/repository/indices/b169e2681d8f14f61485de84c0983197.six @@ -0,0 +1,5 @@ +B+Tree Graph Index 2 +node_ref_lists=0 +key_elements=1 +len=0 +row_lengths= diff --git a/src/launchpad.net/goyaml/.bzr/repository/indices/b169e2681d8f14f61485de84c0983197.tix b/src/launchpad.net/goyaml/.bzr/repository/indices/b169e2681d8f14f61485de84c0983197.tix new file mode 100644 index 0000000000000000000000000000000000000000..26bac85f1b618d5e97059b5d577c3cd782335720 GIT binary patch literal 18129 zcmeI3Wm_Cg)3AY{i@R$G7GxI*9^Bmm1PHpgy9W#I?h@SH-QC?C0t9z|Nv=Qee7)Zz z^Qmi&?%M6MrmDMYdIUcz+k(MlVz#>0#$*zf24H70W`L!Y0a)7>Y^ZH+VrOs13j&yd zU9`dGU<2V3&8f;a)TR!-V)Z6kZ*w@&n|0O!=Sh+)faGA!Zhn|2*7AZm4B zEMJhgA1w$Lik*DtX#1q8kj{ZUB*~6-p_=z0uud4$zlMHx3*CPgz5JI_$$mcVH4@XH zSeKV#X2$^u^oJN}z-C!v2XdH`aCav!U9u6Eh!y*?1%7sK1~)9`rq)=a`(P141Lc~~ zS%PI9a1QO&UcUF0y0Gv!wOB%13KHvVs134@-%(oOjHx5lxP^$|cWmhn?_+lumci2I zMubLyT0J3VH(YNkxCG+g^^d?m0{;m7Bk+&FKLY;<{3Gy>z&`^22>c`PkHG)81e{ZA z64b-DfN1>pdsvzs1CJLV#dU*Nj*kmA7~JOhq|<(1*lA?Uc0>iSKMzHyGWI)i-0qSp z8P0M|_Z^IwGr-_cK%?i-d9Xe2K;E{S?dmV;9yE{-@@k!<+-7K^A?TOvT=Zv}~*^LT=bBKQ$wd z=2@meKT2{I$qz25!Bph^s6TA%(E@8NzSF_8P7M%iKbOtN#CKG$j@LSt9jsM>#@*kU zFFNKfni`cSL1PG`_4$D0#ck_o#Kx5RQH80|H5iv;@Vu+F=|BK{j6f(C#y}ci@0oZW z!5$y(<9HV@y^q=LxW8&`yQ@a?G9DHSWs)#p0Aq^)bPQL9BDU+VvQpvT zQGy^aOh#LW*x5aK`-%?*~e-w!YA#{6f6YR*|3VFgO!0d0Rk5nT{M&*jv*uAz-{Z0q1KntLAaR6SZV} zkUm3`fjnK%8|OvSC+!XR;>#heuN~E*Jk6N2qQ-+e)^(0O6BC~Z;R#D^i$T-866RXx%Qa%ZCllTFV?QOx2tIsojBkD4DoYmB2P>#zbp3T^sN zIK?Z%FseEdCVq(Tj$L);7wU3p{e_5hO62Tmdxmba{OF>4*mvC2HRWG9@4>C(>Th9xx+Tf4Dm$97f z@(j*>z1!Q~M@aBW6_Y38=O|Vf4U84eIcXh=wc1r6ngx=;5Nz}fXS-|)j}6?8o7e|i zEB?BgiqQI8RBYFD@bPm8qn4qN(n-jYi_^1~LEGi1y$Io{izP3xEJ)G?+w{xhw}j8% zk7QTNspHzdpZt&@C~7O39RK;EI-q5*6PGE^#$yEJc1{%07HGs{$w`0@K`_}Y)=kY< zw@i(60SmpqywL-a*Z+7xh(;jPMJFfSpH@Y(MUXhHD2R+`TX<_907S*qSO*3lIvU7L z^Lu&!y-)}%vtxKha6?wb7c7qjcWnNb;H#N=wr#C+tuB|RGaV1U(fW=U zO_7nEH#5K4xn@zq(w83%X2RoSO3`6*+hzo9#9;6I%7kbW1{y;O8(~n-yYv>nsGa=5 zL6dzK2hbUbx(XEHo@Gha$=i8OT@N>+{JN4TY$Rumn&E`dt#`9iD%;&ODN)2lx8~yM zmcHB_Ceasj#1d#WcU#{Q7se1m?}_Cp+S5F6+R<&bHk7lKwMp~A6)C@{4)*yh-Rq_b z4*!(3ofkFN85HDvg64E?oTYZtXm66VE0J*TnU4RT+LVL}kc2b5nMEB0NtI_B4~9+2 zB~OX{Jx)2T{%xs>vdW|lN9pUV#L1kzVl~>6AGLz|`t@(uFYWB6+45x>IOyV`|QuAG=HmRe}bc_iOjsFS*a;TN8zO zt~FH~LKm6)bb=jCxr&u1;0#*Y>+t)1abrUFP5qn6d2kL>qItaYWUK1DVgsF`*3;|f zj>GP8P80G8#X3tT;7fp7@G6=jrd}|+;;a;mh7-EN*1h!#0%rC~LvinW4HCZO9rr)3 zAZ<;W4sqH$64!gx_VspC1u-SW0#Y z&n@{Zo^GX{gHw=_9-Jupt8AlTXcY|bC22*B6JyV1T2ZK%l z)JI}tF*0<`2Bed63j0g7ZKg$SgtN&Zy2=!IjB^v53@JN~a@9*UfS<#znoVBWayUd! zuExQ!z7EB=@0(1?*1MHw(35B0!7y+-b>w8)Wr-PcddTDiO(X{J3uz#V&3796 zcYTx6%2>==AHGM(y~gHEL?wtqvd|iX00_DQxv>wd7@0g=Fpc^u<)6MG&+! z33wB+A0B5fz7OFG{4(@x`IGJmK5HEjZ4J>3ixz1bOrPM97u#;}IuY{|s`%a^mS~ z!$gUC6I~JgcWQlq9iLbc5lS$uWJfZC-Z`Bj1BTTh|KQwJr3Z?x96u3q z8Ul|tBv^MGDe==rPzOC{n*U0Dj*aC)GaU(#MP3w65Qnr@jS6<8h~766CiV~!B;RM; zUdc*0C*B{Qj*p^T@R26{@0?1OR{>o>B$$oI&ocE?&n^V$xKhj zRI^F7rtK?8s;%Ft&*&swEjSJ+@;{d0v$~kBb1fxYc^G@gMPX1j=2;X!#z1{#5RIfa zS!$YW3+#Ih#4Lcs>x|}j$xQ9Py@j8_4bxGVL>YE<&?bX!#UWIS*(t2xu}bKtEA9^B zAN4^g8cbO8lQatREFRG|jlv zXeFgFAz=o%<{X{kX+W)RSY#2C?1K!F(&HpB17GysOGk^vCLYE??Wl(*f7n7zWK`-` z^!i;}OYb5QRH#p@b5pmPCKsE?6%Vx&2*V~(Mj z@I35%9w%>YG|qVFsF&LzE%RPR|A9)%Ky$=MiC`_HD18aEMUOTx#>ePDA}Of64;iVC z3Ys&2yJxo>@k*SiKSxkR)1y;ZNJQ)ls3X!)3}cXETpCZqbSc{qy}|l-{Uh*?z&`^2 zlLX%K|M}(cB_JBCPMHhf8`%I!1{2-2j64~+6gylpw6XJpYiOp*d~sUH!E6MyLL2Cg zJt@KNxwLe6`@#7D_0r^5{%S2ze%c-Qx(lpq8PWYub~2gHQ~(TMSPkb;6hDGA7G=&AW3_MU zT`~oX-0Ekf#JT-8a%x(f^fnJXVA`joXgmJOGpv(tuY=B=IS~bV&9D&Ikqr+^E%pW?2KI%&3@r5nIBO22 zQ{;@+N_H2ME11aj2~v>`tR2buIY6FV8s=@7OkkugZL{MtlJ+}iODo?S^4!Vf;~P=B zgILD3emc#E1D@dJO(?X-lkelVHawf@`pn_`WHbsRlIxk5@O=%~#kz3vbDSMA=)m47=g6 z-pkO;bNWEX4-dNJNo)Hk-U4GnQLBuBG1Mizj;az%{@}zzlmM{K)}=^UWIeT*3$!8I zUfpxrRiC&pP+V%>uGB&nH(Rb2Rmh~#~EP-#z^$P^Zxi@n7KlR_)*7n zwdPaS&NFxWM>#^UEEPVg98s(h(GyWBN@F-x?~zZqQ^I;&erharOsr9(Ug30vgY*UU zcNBHjsdLNA=8GJ@y%}GLeoRFK`mm{hufwK;55mPc6i2DI_a0{z!g5sPa%LgJO&{p5l6GtJwpVwZb|L4V3>42dJn)d%lZIVV**}-8!ZI$xyRhGDIWIlxXS)G|oF&Db zzXvHI70DbH43lbE30aELt$BEo@^E~{AdzNH-)mUKh?l{Xy=c0XQ8949R;rC>y4P|U z3nrz)MkV?tufOhJd)(rCcMez?@+qoyA3XJi+X|5AVaep2R}}vgzFP9td%NBb0y2&dZru@s_} z>FcuwgE)_ORQD`fsmI)nKB*#dEV1KtbH5!n1tHbM;dw3v%Q)9G8hKKEeV$V4Bd@ed zO>xE#G0i4jpG{i&M6*v;3_N4jKFM5zOGLT+&fE`+&Vd$*Ud|XGsx+X4Bi7!JU zDqHHosaRgdvZgBIHlo{JmID(!|J?!BA0{qQM?^X<4b?@H4gV%N>k!j6#2pn|w&vF`X z)^l)Z(rE4;Gg z&GfIrm4q7O^dWt-9_>=!h9`IRK=}&};=#3S&rFct8WCy(F-*sx*KCTuyU>Cvy(;DP zfoE@H?2^PgX<@c?`vosj)M~3xQ;&}~0V7cH_L1Ci-vjtDj&&T-L`%Iqn z9>o!ArAk4a!dBM$bb?e>P#%7M=yhszwqyz%c8xay3tBYphtF;TT^n#s~RrPJ;u)S%OsT+t4w7(1{;}vj>SeY5Svp_zPzb;DyY*$WPZx}0MvY#TH`de;$MPL#2 z?&!Y)MM~$N0)_u6)n@=g3DUx-s;)n0AQB!1Snkwoqmx#WKE2`OaXIhk#m5<%YefKl zL4&3d81s;3z+Mz=rk(B6mM{&8ya5@CKN%tVGH1(``Eq8>3c2l5)qw&)b8QNa5N0h! zg8KG}s8&?f>j9zSAcQm4v$DCuVXYx^o2461-CZ6q6C&#oH5IK=g6$#3QHOB#b?o_j z)pVR4T_pMUid{`jz#^A%Sw2oBJ|6lEiYd_i_wtN|es&PE&!Z%bQue1xl|5Z}mNVCh zpV5brrs;K4AFDONa-V5ywftR@JCeNO*(8Fi20_aUKAA^SJ8=8+_vjJ+o4-d-PX0b% zEvb{ie?r^(GcK+^MwqrzPFh{`r$N)2<@WWU>I1=CDK){2GBN{{ZvKI=dG;mcQxIN8 zX^f7K2x0|Cn4@De@mNnJk=-a}QvQ*VGGnr}IR#n+%G$P15RD7QrJom_8Tv>7X)H{r zTo|~T$Hj$$-=aaMUFP1_@v4y0W$Hq>qG&6E6LbSH$S{bRL=7=hSLjSEpvfnDpdU@m zA_rXnAXTGGdU}ptiQ$qnPKTFo4z7(zcP{RvjM+gj!4!}WUv{8W*GYvnQ&eE~n6ILM zj+1um#b-nTeZH|tvzG5k$ep>IrFZ4JDLt9Jzgcg&%yXw{rYoPx<5|V5ZnF0=Sr~V+ zUhUYZW_m?BYH$0t7O(v}^rI+;rVaA111?LU_>%qE9h?ewAt6s~&)^A#V!f}MS;jTB z7CMUx{g|-Le*a#Gzv?1aXnoj&Q|`Qn^2m}1gH9N>HU9dHpwy&9^fh;zn1}T>fC{9V zzE;}Sh?4<7e!*w&E}8SO9XEa0oijp6FZvvf6LlKP%x%@NROwrQQzFEHvsm~0-V5Y# zX~A!Jb6I+;1uedNoR8iq5-o$yy)U~wK|wCT^_AP3=T$^{3%XUJL5uvzbE~CK@J-G* z+=-Cqm4a4$e~nzKDHZ)TiB-E`&5j~b{{C&~EDQ?09*REB=d++iO6)YO;%{sb{;H#9 zzbLf5Sg&Svzdq6X%>2yxFw&Fe_4=`cY5wd(`@ND0GWPKl3>b$T5srVTW(lFORJbbe z&W~otqx@;`QbTTNb&`3U0{j&DRc`;-Va$IV>NB!|p7`Y^iND&q7l^eNor`%aT*{5u zKL(vNc7A$v+Nn@$AO2({w?8b7DPL7EbdGu?kmv+v$OpX-KZxTIC@@c`4~W{M zBRA+>lp#y?MB)`-VCKIafKWWg7+NQ#rd^q#YB$HoHPbN9FQ`iCob!Xs<%cYMrJ&iY zQb6JI?NVW+V;00NtLonPS$VI8D-kCx(O!sod(971q{W=T&Otrn=hN3|t~l6bU;=Y6&tSn=gkQ zwq+|KgjbR*w2m*nmamm+Y{(bl;{&K^@`K+m-g4U&1k?rSyX#29_B?a9z=WG|y??j) zB=$~BG&DMDNLlfQ&a8k?@Gbf~MNAV|4#+nI)TcTH)OSdu^F$z%8%^MiwtIs?+)f!OXp?aCDlP_zHA;&o%T%M|}@MYLvJ2yt)unv~x{1AvK=t zYL7h+OgAsU%3Dap$N(=j0CbXJ9W6aGAemvayfgH>pB3%I##xGJB~sT~ym6iV5 z8-}m7n%bsJpJb=hgCZLd0&8=%!Jx-;+?zx9*Qx75su4fcx@iW+XvRnFH17iQ-rr)> z~S@g6J?u@t>mE1(bN@uTEtR(Q12PdZ(*(~fN04sO93Rh1d9{H^6_jyDlf(xb=!x)7YwyKMLHPlN|o1?2O zz>4oeAEZG%uWY2a=9{ir9%YBbUjn2GzjC%zKKVQMfj&snww$B8UB3yEz7mOo&Zz#s zXDB~1M; zzifXF{iX{n=drxmyk?IH?Qc}UA@Z%sc!o_e?W&;7Fw8LBMc=f-9L`Om>MvjbVjs$Vl+l#FSfF-(!ssID8lc)BRMVpxIE55c`nbKp=$AB*Qf)1zM*^6fo*3- zWkD6|6_5%L_k6wm;2M@$S0VR<0x>wxy#pRF`kocvFj=&$Rs5-8^m>Agl5od1NR}t} zx-(}>7qxAluRFdI_8?n*K1mxO6Qj+v?X)F<3>On>%%;0@9 zXURLe*AlqyvUc#(_wD`t!%1x7YsnnFo$WQx=4vJvi&XOQ{g)e?hx`5^7R2X=|MJ1) z!8b=m^S2voR)Z?oT7)Pa5%g-(xx&2#nUm%T z9|6x58?71v9Cetky1Rny8F8dfsgQBydiKZb5vOQ+AFZ(u$Pkp?m8qm z;7*&@p#V1_P?1wvTDW>-#(pQAP0NjmR<3+@*Cxg}P@}lWMsQDloNJLTwJ%BN9sIcD zNvR5y+2b|n*QWa=oWc9l?$ooo)svfXP9+Hd#D5AEf@J%VZ^hH6`~y-CupCz&cu#Z}c8rE~ZbbaxOEdO^zXIXf4mad@ z+FN%_IE)ESjTYfs=LI_(()%C&aj~m1q=cZwv4k`+S1;Y+uz1B&V$Ul%3x=IWJqykb)AuDa5{an+xWY z$}5C$-#5IMd^G_jDCKg$B9*es6ZknH~Pto0wnkIE>D#TvfV;HLi4cGVc&c zfH??+P}!o040MUGfKcD%FT>th`S!48fs}`@(_MUG%-3zr?K?<==S>I4ND-8nmO+WADj_^U`)cJmV~=IWc8Ab%V$VR>`~2!&{pIit?`qAiLT3I)7`oq8bXGC z6>UnLWDANYcYiivKeR-w0YqsA$7@ZrEhE~%LTMEMCB}!*nwwKC-GdF$PcZlK*fXPV z3aT%O8fP}VcA<l2ORLplG|^y#-ACNPd8` z{JW4ktbN=eype#CuP~;2=ik4dpT7e55Y553$+CZ+>y{ODfG_Z^Sod1ig$zA%#!R2D z*6UB8ME(1O5Lu8R=X!e+&?N!o+Db*!9S|rjGz2jKLz^+H(ga&lVVhja|Bj?JhvFm^ zxv6xcl49*)75*|E00 zQZG^$;q-Ds7it>&0c9Y`Z$KD2FJ+yD$_6!OSp70C2#}NfQBvaIDaY0NI$QBu4GhJZ zn8yo(G8NDGdrW+I3?y2^qesV*SsktYWL!ERTab3guJF)MOUvIXNbAbzpF$bj8TV;b z&XGSj!q*GUI~3CJa9YY2zR&9Y@RU8?J#@#KA<) zM^1efcC0bT=1jDOBc3=pgaz|cwElN@-Tb{r3(oGlB7zi29A~sG5@*|wN+<&kr8tvn zY_4=?7;wq}pl%)AtV*&Jam*e5F;oO{% zc*^YJ4D%;_6Arulo=$DnEfSaFR4$OyiVBDSxAfs(uYUyo5%?b_;GEhLzihev3C-Wb zLT6ooiOhGuTg1C1h+is{{)j(0XO~V+TT)VEVAVVpCIxTcuB-d?F+d2V+u)is?Mu0s zmFC2WataY-pqC#8IR)fs^M!wdi?hbZk0cfYn^|p-nWC4>tWEPuBLwz|(?Bu^axV_F zMi1#)XZbnBi5pd6R9a{~0w{hcF9lDySnJ@4?Ky|I-93KFE_fphcnD?$81&2UbkSd9 z0{80?Suk&q4)PEgXSAyv*%CHI8mli7TINSHo0Uu+RG{9&l6OSz*_cdgmq{iLB}egk zKAkRC7p6xhUNpMinaw`(+O4k>sFfhwUX`WBkb8Ocd?5S5Y3L7U9pmT!xgc+h{8j$y zln2^cmWryR88}Xw`RVGoLM1FC8};Oyzr?kcLP42A8%@#p?)Dz#M1-fy(-;RoVfaw& z?Kf0iI5?>;5T*gh+olC_(gRZu7mJ%e+I%25Qh+`uM!i zqgob5mQPH{j4ts(aY9emvhXkNaN2#=OT|UsFi50h>HzJCefj>Xzykg)!+G-0v2Q2)_K-{a<-Y zZT21-TniL0#gLCy$pho1y!vA&e$7ME1fL;=!Qs0Y&=Lq0BQCJw-@;e%`Vj8;tS~Wl z?eB0B#;KBoPrqR%Q=ZoaG9nBr@aYy=&L8eM+kwe*2O~b-lg4PaxII@%7#-4>*494c zD*NImD?VRRgnkd?m*9YMVG@Kfw_qdeB>WlSC;MGt%qai7riJh`tOMg%ev`|pjbTiS z=v*~3oc9LB`f;q>1+=e%{B_ zFDjbF7dLkB$p#JOhxk5TP)*)=Qb!}#b|~=%&Lt2aH29A5|8`R?YRBPkr&3$iKlipm zJj{AgziqydfjQ{C1CdQl_I_eMGl{T!k7^lb?-`#I;AZ3(<2LKF8DwX8Ve9j z5%ivC>lvQ3Be7>&R+*e~f=M;=)^eI{^txwEy=M0uc$J68_z-!aRJUQ9PR5(#nnah> z(~aH~r3p)Uz|-#Kh%O&9!v@WR4M!W##DL$aq}q^)D>);VtGsllgM`iDj@8h>VOv!e z;y6NCYz~%sK6i9vk3iSn9I>IQmoQ48OTtK|M$$S|-(Or{&y|tc>#=;j)th^jX2Gll zyB-W#xX>DWKXF>-w%8WVtlL6jYq34Oy*M;d9h^C~iz9}Lt1@B{2uy%)t`9sKxJVGxdm%nr6PzksU z`IJ&_r>Y96|2_=!#+)w~Xw&s&{Vf!~ebBKe^(QZdm?&|>&8g&lAr62Sm-M3I@4UKl z2z-xCr$~ofqK5w%mK4$B>~k4GLE+IkX-u(W^T2kcCJrndh?uk`;Y+}`%tkB^A?Rh; ztj}RrVP4jxv3bpS&kFapMG79BHFDFTdBDY{Y!c1bKX)1)>4xxTYUt? zp{Ogho~K)%v_S7C>=B_WMnX|7O(M=*0ZRg0Vb=@MK2A_tPV2)goqS90eJ-wN`D)U& zIC{z58+CrM(AmZDfC6SG94z9~P@7Hm)u2g6W)}E@Pe~Ng^cxL3r6WAlLvI5QiH?-G z6WKeyQZ)o=u3d-0fV{p(-BZ4Xs^XYHn;^qpF0=oop6zWU6Y70s|3X8#?{}00%We%>V!Z literal 0 HcmV?d00001 diff --git a/src/launchpad.net/goyaml/.bzr/repository/pack-names b/src/launchpad.net/goyaml/.bzr/repository/pack-names new file mode 100644 index 0000000..21dc49d --- /dev/null +++ b/src/launchpad.net/goyaml/.bzr/repository/pack-names @@ -0,0 +1,6 @@ +B+Tree Graph Index 2 +node_ref_lists=0 +key_elements=1 +len=1 +row_lengths=1 +x1 PgOCĩ=yy:1"y8oP+].+E Npp1!| \ No newline at end of file diff --git a/src/launchpad.net/goyaml/.bzr/repository/packs/b169e2681d8f14f61485de84c0983197.pack b/src/launchpad.net/goyaml/.bzr/repository/packs/b169e2681d8f14f61485de84c0983197.pack new file mode 100644 index 0000000000000000000000000000000000000000..8708f72b82bf94b1dbe43ace7a4fee8cdacb2283 GIT binary patch literal 583124 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
E7;V+le^b=_4EO>N{JMgx9PYc5Hvyma*9$hH zaU?9eZ0JiEy+dg&6j7t$Sag!)ymcz*(E|e_@8byUN&HO>oVK5U+?w8#IKFG)=av}& zCY(y+Uxyg)ei9ixYvnPtcqilrn3C~%t=VJsOMB}oJcXH>d8732-Dm1{;n!=39&5p1+2Nhbv#5?X@hABK7f9c`oofPRAt85MVY9xXL?{ZVTURmvz+a>WrG zA81ji$&7bgv{xE@?*9vy*1A~#b9fhaf-Ni3Lj50Vi54>uRzy>i(E35cmTp+9g*%Mq zY8lf{=J0@gRkIhSQV2yy0(9p2Q+Hwchxw9F= zS$?=}dw8~(dMVkE#NdidWGk}`LYWK|X?Qf0N~v#3@r;m|+&f1Z3kj56fmT7xO^^}w z7Tw>0VWLM4v{`xd+6^d>*lW$qWqa@3!ouy;4VRPDDVmY|4>i2#H~nS6)m5Yw6fZHNM#qT6U?rOGm6 zFaF6)2>1H+a)d{y$xF1Mn<9@Nv4<*^|L?EQC7)eRg40rCe)(e>IYv*pn*?a#LT0L1 ztvKI8Ok4HjPc&;M;gRu(zg&72%jlEOiQrwJTbt+>L`Kr%} zz2o1^b_fK*;Go4J&Yy;ricnFM28A9U{O82Wvw!I%ee}Y+_f_z*Sib zcYzB5nv)am1Ua5nD{agC_6Q)uUYJnQaJ7@0BmY%Aa$4g@+4O;w6_2+^ltH zef8;NB!gNw{~{3$2Ia)=Ye-B4KII60UM^1F<+(ky&RDl`L)-<3^>Yj)FZaT(h*aXS z)+q4p10*w>y7+#Rij!HURxNZUB{VW6sj~)h$z@J&uS(-;?dbEp1dtMGu@PNwghu!c z(kY8~23j03*&}pN9~YFdodsZ^p(Ta-ub=x8Qs2pw#d>t+vR5qP0iV*>H=m)5402k8 z;Hr7gO^Lci3MPU{X~r z(0gA$n+R{`XI-zCAdRrT9Kn~pZ@#YO_%t@~VEm5rU3l|8`(hyZbpyumHoY+UODS1h zy{teGvDjR_-Ve}Mhvqi6Zk|?j@pamB33%S~UU@eO(qH<9`nGmf4fb<=-EZ(OZp9yp z^7;8kxjnJ2suf9#zLj)5m*%4aE0xew^Ok9obvBvbfF4JnwW-^|l7u ziUI=hzNk9?84}+aX(k_rpsC`BgO?)3QmHEK=8>&)R~wM|3&o_!J?`9|XpOA98o$2Ct(Zuhjs8Wf63!XFxf{Cd%QHfyzXk&rP zXUSWC@p5?cpB*R!#NEn4=L7y)=oyXl>oPXh$^jB6VkbzfC`k#`aDvV4vTKn8LnQPB z7O@YN4SZ9~Utd`ixl*8uBlg>ec61q8ng9h1HaB{`zfDiyy`X%cIW!e`6~&-Q!uDlc z^L%Z<{SjGSA*(<6{Z5tq-i^NfypHiN#bwEF?$5#ZJ}|nfo12Q{JziEXZI~s=(g~qJ zw829L98BUWt~lk$phNhon|Z*1H^2ixz}JB=Df9z~6kv+zw`mcjCjgyVrO6;gXZ2U@ zj;^8@&OX+rO!t|8Iv>8YEP+42R=7Wn6UW$-jE|lrO`UxWy@sA4UlEG3x8^SIclb*s zSkEf+MHkoC$2U#Q5^T0JHu=1lN4zmU?SyUJ_&dxwxGm)!ytdaww=XXVYzg?a(YCa{ zxdS%pjxW@W8D6vcx~*+4cWf|I#&mhj;_21DH*7Z;nSC-MevV32uCLN|IvNW*=W;l>N@&U59*rREIdtZ*|bwte5pSDE|aipn41^#nSa^NG$uYx zpY+gC*1&t_-CpIzvhnX&e538W9*?sEs_|cg*gJmHw)mP{8f&L&rDg*HZLE#CLseVX z)@9%vErQN&TM|9i<-xL*x`EdOI6&*9ft2g69|peU=xGA;YD-AIXBJ>Z)wpui{`5^( zIn(|uil6PQ7!tZ*$$ee$R%s>eJbQ7Lp|ya;?faBNd$qcjqs`PoWzJDlTQiA2C-j_l zFb6nRX$v#z$>uB(!%R8JbSmG}HcJ0&#M5MlI&Yh>N%7*?TphU_(LTW;^_(42z1p+a z|DiM%tLa_^eEZ&(7I?w3A2tfpVe3BDKlw|4<#V_`k&Bq9@B9$>{QGn^f;g7 zUT9kAbvoO_PSQPU(swrU5TAoz{ct~edh0ps&k*|EKeS8$K5b{rqR^4|S_s-(2D^J3Ehtb+6h`>FL|vE@Qg*cGXfg@zvew zR_&X z9bJx1E>l=r3J-m?9bB?5N@~j6=>Pm{i>jt-ys$40PW_vA2@8-DM@k z96X4(vXs+3Xah&b95gcO?b39F)X{bnGRvv(8;{j0?hkZ222xnKtjsr8YGK)VK?9YcUvqXDLWfDQ;&e#1s)Con?TaMl;xMb&JQ%=mr%-_{778 zrTv%9JLbsOW%F;+)$aoL_pu>J%!pzdd_^*t0_UaufXA)&7pK=cPH8DR4Mp1#+Ojr! zT1pP>Ai;QisNTP+FImqzS^k5M`amrGZ zYS?3bP|HN$wnp6|TzY6hGNCN_S{ONdx!zS5B|A9lA!P|lbuy@ZF#^e>(Kv%jbPXTx zF;d3_)nj)nh%zEi6%!wg&l?lv^$?fF+x6|0)TytfzWT4FC~)i0db-cP-;JBkiR$zO znt_7c9)_=Z7%zIH5_UDcdD*2KRyTTf&yTM+m#Wx7I4?09=S&El1G%?2ZYpMQ>%*^Z zi)Mcm0(;7P^)Jh|&ZmFzoX8>OIGKS%#2icmZQ7UAUJjs>?s?=nSDq zW0pJce3R1XfdG*AvMSI-`zeODj5U$-6VMXHh{k`&+`UPgwPH`_Q7}~mlRhBXGVE3h zlu4ZSw8e;ah~g8y|B4>T%|%Dfe0G|p+N|HYA<|iu_ONC=O?E`7gFf|jM2W3W?@PUp zboi7w&hmbNOMIXIzI?vAMJ#!KCAq9JXpHglDgSwAiY?8y@_7%o8M!?<_p;DUE+0DF zXRmrddQ4dJczr_rS~cnlprpO5UM>hCRlL?f)sEswKIys|$g3XOHoNB`dt$(yo*tRt zyJku(jM6i+UGh zK{&IaQK?7uU0j;EBVJKaOoT2>8RuW4ny2|**ZhJX!6J5BXvN`y@GAlI+z0>u>l7ca zZ)`Z}<9iIB(Z2zxYW5F7Ki$VIW0#8aw&w|XRbkg=f;>!#`@}!_Rl+H0bM^2ZFzVgM z@u`7RCSP4%<5yVu&NSi6uBZvZh`L*?ET8N*ePmNyxbBRcKK(j%oj$OBe{g&s8F_sw z-*0}8ILy}Ec}gK~cdebUX(0c^{ahrUfGqEwZf@agQ>WI&$$dzg?aKN2A)kGwl$^N@ zl<@uAF{!o<=v#cB`mw74IZwNF^6L5wk2&wopIRSZDAv^#Kj^OS_P6}&%yVySyYk-N zoTkj>C3;gg9X&p=>YAT0uaD0SR@=7OrzI?0@irj0OphhbZ#W2(S2>{1X)S1G@$qHC zY#ft$Mos@lfn{&aM|-zu#?#&j7LMq?1?TL{0LOcIfn7x(DV-FDPX{p>-_vfS3xW=yNM0~wL+xNoDKVe3d@~!UjVkPIE(lZC=MET)hY^@~szH1{d zM)i6*cEPl#Zq7|}#ir7;MYpGjr=#wwUYC0AGlzaomn|*(!8<1Bz4M#(Y3w-cZ-~Xj ze7!K+t69ID?Jw2T;*}XzSLGYARuMn#{H{f^jYpvv-&64RF0I6_^N@l??m@=-{h>Y^ zSkb3L%#lFS#THWIYd;J9wd!Un@U@-J;O4pey6?_5PbHgy(>f>ick(4!)pA!JT<(37 zz3T}#^TkzaJ-S@5^?0)jX?nM&nn8``BJa^_b-y}t>)WJG?v|guSUO(y<5{^c&S4*g zGAqTJhBNQbN;n9>nqbDr@uFNi$Mq6ly1dhF`?AEpj8f=%Bwf05Een}qjdAlA^{YL; z#xBT4s$JA9CBL?XC_T0hFa#3b4a`n+vCSYpo3|pz}qc2 zEbA2o#w6v3_|F#Q`Og6Vlg!@}l_>w`fMw#jMvZG~1)exs$)eVfsjq*^P$TQ~1IIzK z8%O^3F{7oO;z{qT1Qrezv70(HV(YWXA)nO{(PyfM5(E~E2B}t{7sTURlQ6X>Lf`_Z z4stBssk_YX>PvA(lv;&%A*J0449z7A z^7X#C`)Lxa#%4Uu6|m&#`v(HUgvx`%g!*wp!9Y-81qt>6fe$$4={x%e)&-$Q6aU!| zz(xJ*HSe-NsC;-xan5H_&T~aFRLnxj6cNoJ7@io+m>?;sMCCxD8j7_naU&7&K`og^ zp8vP6B<^HiF%>%N7OY66h>A>$i))GLo6R<{m6D|R3UT`|nnd5u-M(ZU$LRi(>!Hx@ zv}|G6R0m7c!zi3Mkcg;#KZ0B)$8mqqg6tpaf^om3P6A%b`>cWX`}c>>v}nh*m&kN$ z8U1AjhiU|BvCR9jinEd{h%2I#gbC4DS|nT&+V7OXP!Xj}Flw@Bma=>ylh=}S%AhF` z0b7WFq zLvXQiuNjH8H>@g`VMd~0GTdW=OfwM?%6z7jQI{%*NzGIdnF&*&*Xixb!*gxgHU`B| zWS1f%o_;D(j*0hgiSsm56vq6!tuxguKge)@bWk-JU#v>3TEpH*VCrITbSO2M9H9SW zAJq&+YWm%rn>|?!+5Zm&qB2eH|7bs1Tz!$0TvY!##^M70D~w-FW@g*rAY93m5%086 z()FpDUHDeveb(7q5w-5j^ooH z*NS{O(k6t2bprnv(~octB%R;yMWKuh_#d=>#No()U=n_aR0&_C{}L>v3*T-nve+ae zp(9yW;3iZmSeVhwWQ?W~kfE#!Tx9G~0ke>=y^LG0jeP1t<;pIO65SFAXf>p_5J)m>n@+fS)T}nPzoC~0BNLRg})AH zj3^uru-RlNvq=*v0_Mp`tM#vAPv#nCqC@@UAanqz&hWFW0xLi|p#P(kZo~Um1Ght* z{PNRmAC3z9u=UK%m5SI?rp$Bn9|xuqCojeQ9}Th;H#^S}4G;Z4$Ki;;KcExup}&tDOHU0H1S_%1?hUuxxd7HGZ@JhM4$|7rDZ)Pi=>bp zY~rM2%ncP%!v{rpY!cJ_`}X>>E$uIk0x@~c{L6rghaqQbpIJgL&7#lWn1z*vltW1j zA{G;NSg$@RswyZE6?&G}?Q8@*nyqO$zP*CjXdsM*rmk z`;K^xT%V-Z7BF7f6vpI;QvWg%7``DK#UeE7oM3{$;j!k&EBTd)g*nL7<@+RpsvH5fwMwx7*F-%NekTqn`o7)6{@RuAVfQ_) zkApK`9RjVXQ@`LEygSvKynZdJf#WI`rZw+;a&vu1-*5==Fjbxw`9yD@(`Yw{!*P`{ z@ayW@JfGsv z4N=HbL|9PCrlQE21Q!j5!^*J6lnH1k?c0Wt4e(IXO%w@1Ba1i;!u_Koql$zdh>i-z z7D@h@43GOMkbVi z%p%MrCy_cFYV43`n4nl}1b|k{xE*wXn&Rl|KGK;ZR-XkcipZy$$F(4-`^{5?{Lgkj z$CQYXhH3cloT`rAi(2g6nP8inuf!GdHk~ss?xixD$uYXZ=Px86LQRSkd#aHs5-O`l z(Rfm)%TV(yaxDCOapLBI=fe~5)un%#j2zBDTXrZ!mLNqWmCQyFi>}5~Om}l-XhFlA z&Z-%`Upua|UoE1qzLMb3gi|C%)wdZVp>xtmrWna&JTKzNj(o%z^i2xJe@Eu~9KM{w8~@!wb21{wYdv<=b4t9PJ2I+@T9oXPjSJ1j$r&gQhQ~l;~tV>opycBy_vyELnd)-Rj z*n-xi(kx60j*x(g&{-HIN*ZQDp^8z6Oc}#LL;SV4EG?VX0SYf=NSokbHja{_{+qPA z!C~ch3d($%NLvTaH1u*$8BVv^JfK$OZTTp^W0T{WvU zDv!dUg<0^HZF4&F{TI&W1c{FADJBORPDOTItKs6)=M7{(}Ap==8j>A2wpmCvc zenLdkx#(6f#fj+sV4`@PjC*lRvKX1e9Bb=Sh6whY1PP@Zc>&89vHyVfTPtPQwSVSA zq;E}aO>F5gw;hYZYTE;iA7E}tjie>t{u{9@oh(a;g`Jt{|8P36ursp4Ff+5Wu>3GO zThRXYh)UD~iP9uG{U(E!j29NFH7+!dAO!J^#|j|iFCgSx$AX^d2MafZ1%`1PJW$(m zI?p-l=4I_7%pd*7ul(F`{C>sjGSkL-tQOPqwo}qMRn>m2Mlh~jT&C?oTeJ51F&dt6 z?dt8^wB5qO2+fuD&+k^6Wb9Te4+o!xEO` zSE~8I=3@s7p&t`pPTg**n3G=$-Z59&RF&aTyRpVsdf_3AaGyiqaU4VNK8CZ0#5!XK z@qwTiYN*w&10}Wb-T}#e-mSI0es#5UE!(3}lY+P@)@6q~%(@h4+jLP~ufsHH3pih9 zgIQKM=v>*lt7!6UU4?Iz!4o8~1Z&Zu_Eh0}ORwh5YF)8Zv%(pYEuW!32vJ}iC=^ca z5^$M}IhxWIwDBs@!g2gf)xA>wG8BV>SMamnzDKx5d5hu7Ao{VIz39QlciRT&oWYgT>f}(I!lhHOOd}4c9#h2UM6G!iKw(-)drQ??RaaiuUUPO=)m3fm z#bP_h9;(fB3#$&ZY)76=hc2~Ss_@$BjRLmBmB}spiM<%$BKDkO>9j9`N-8-Z%~**pj8>mAGnU%l`XrJ=PJ;h7OSoD zZXCz!k6T9SpMGu=-uWb?5}uD{YP#&z;o|<<;8WQEmw}tsiiM#Rx>)?E*U_~s?8%= zFvfoT8s^gAv<^f-T$$-Uh5q>K#@dhPq&z$fQ#>vtK%hHKFABrT;v%U{Qp4a*NjD7r zqh^yvi$z1I-o-n;9F5#SauhNa=OgrZd91`DYP*knM)tH#veoTyW2A{9PdB4Feu3HA z2YErc<>XTF0f}i(3b-d)Wq(oBYo8@~yR>6`3yO(!gg^MdU0N!ug+d_)6VzF;(Yunb;`L?A}O2IZG)?81K zHuB@@k0Z(mJB;VcGVva_W97DM8P(~{Y*HgTzJb~}#f!tk?6p(ZYR6ARWA+gl7<;3C zr>H1KvRHl>(}<4hPHs84+Sq2%D?6W$Gsn|U4vR`zr%4J93Ce&dSj#_=HWx2~gyVIk z*cmcbFhp6H!TKdMlNLeP6{9c7zfvV^YL?8ErCSY6e=%{3PgzdooiCq<5PEM460aIJ zbJg=o+njHOYFl9tFT7-=|KbI(TM8;z*#?U;b--|woorP%cHTJZvWinxeFnkzXg-wZ z<5@ClM{RURtlPQ*68S!mg_1Jx^yn>~pk&w8{$7oz5Mhx4TQ;-&UWHBGTiPPb1BQKS z#n!Z{d*o?~CC98nvlMM^Uu@nQv~2=t*RmK4HXoPSxO*ba2(l1KGw&I=l$^R)RTbCD z0U-}WVppWqRbOap5y<8tui#HE75&k%&+hvpJkAQ%!jfhs)n>|w0HTd8(_Cl_o3PYp zEH34Wq=_R#CpktcvJ9Ctq2!325YuNYFZG19hAUGoF@`R}N7Cs{xh8%nyk9{@s*dbo z@4prq4M#zY7|WoYlBg=^3L&0GD@&;@eAtIS7DP#wQlcdO{Hw_bNhic#B>Xr|ejM3K&WzB+KM1`@Ix>S|2?Ii!(NRTBD#Hi)WSfS8oe#H->2BqkXs z#ip(RmPLt3rFkKeZdL+XaV?bkKY*CYd-Z<+!W5gHAAm@5Xb-X7qP9s3{&i<7^b--u z-;htwp_->eFo?;-?in(@1dfE2bPi18#XqtQ@V5@0TtuR<}24= zEM1>7GC ztvY|V5$Jw508t`Ksl}nu&bs|#@q{?Jv7JRWFnKz;xwmeEy9UQbHt?*OyxMKM;X{(- zlddxuxU`0!-POta9XNeD2W7+!x3Et5w-s1RAT-SUX6=LsEe0Q+V=<}XMowW4 zB2-qvs`1>pm-buVAFbu5wmQ4ZgtK-W77k0iT)t3O$hMIffhnxkGetE7lmI>?|!eqEmuA-Pz(sS34^Dd{c-sSF_zxW<-wyS zGG_YU_liqIe(W~U;CLJujfe!+fx~T+YHaghF{ZV6sy25YrNd$AfW>h+0K6UbD=9H{ z+QUm-*s#KV92xFrCqugVmv{Z^iAv!6pmV{q&8ztEz;i9|{SfEoHKp*xM3qU7Ja&66 zTUk@jb!eL=R8OWwy}hjqjBVFMw}nAhgdCX>6t+veOk^-6i8IOEZAF#b06hECwnrY_ zU*2gr>F~-iQ3$A7(QGE`-}VVG&aN5YXh4k-M*8FS!LPV!2XX%9naOcgGT5XBZoe*O z|KjGa-J`A)%M|%JKd?gB+^Mm&mp#SB@=HLO5M*klGbu{^DR4Ca`1AEaZFG(WE2_{q zf_!%cGw-{im6|@(AD30jcg`_+I9}LYeT>z8PbT~&XCJ+ISpL)MhL&8QwP-;6vxVoV zHGSu?(tK&ky>B@wKpA@7a1O;sv8jAM4HDife%KR>yNru#MKJ*(Hn9-o3K%?yI?WM$ zjK`k7bnw~uXZAlVGPwz}TOOH~p}F-o5qqeYE0_X@6dGvgD0xC)Pmr1e3OI3r8$qOY z7Yc}?NEc?XCJ)MA(H!PMCPut*mk>;XiY%nB4dHfDf)^@&Kd-G{lBW_tz8tX~*Y!yZ8g41&T5rIWC0;Qix8gyQN#mY^K9Wg?`-1v7<7zCxLpgS5X zP8qfYJfv@~oSm8i9^@&9Bi?J4r&Ew+O8hd<(mpiuVkQNzdDNOVOub(56UFcSy*Gy4 z^6(CjKRH;?jwoQwWZ2kBB!Y7Ky-TEjMpMAp1AtfJCo_&^0<*vZY@TWz?glS>kybgr z)HpNA6%%tr0_>hEZ5z`V5u1AP#g|c5!`f2vpnx=xgb{4$(#N|>GOGyl=YjG8rkPbl zj5=*A#tp0_M$#s+8CK1)g>)1aWu`czALUFk#cN~*y2_!_EE{J8&*2`X8=s5B#p#z1 z@~@+srhgL;^Ajig6y0>N*+y_#+sY{^k9OU)RALhi7Rmv~&z7<}Mye8&MW*>P{B2E* zKOe2Do+`8nLv^r+{U@)KZ;g?+*yTdGJ;b;45XukOXwTE3U31Nhfo?C9Z`P+R4q`W- zT-79gKG|%q1j+Fq<_27IZhbtP*9We?d0mtD2XgaYd`^etww(tF&!K+QsG*X?G|6#) z6UB}vkyk2Ocv^I=u@)6rR(;NHkAtE0e%QUPgH2VM?8-lCgjQ7)qmUa(3}R7T3;6x^ zSN5XKRCq1Ckk>GD5YxkC$?QldM+Rzw3sAbiAx!7>mvIfkpueE_8q*Z3_twf(aV2cKb#O(Y3QkH%l7pL?2aH@~%!4-eH#q@aU4xt!D(Q{A0 zyyl)!=oB$N8>9@~r*9cuk8pw;+A&Ya<#b5Re{rI@la>MY@e$48Wt_G%U35J{*^q05I{(T zl)w#1;E%~0JQh53iOqlAC;<{iaOMo$(I1VFjr~o}H^X>1Jb^3h z`zON)>kTTTGuLP|PTn5wXY4r=Pe48c6#DVv5c`|o*6GKk{)3arS;G49DgNgJ4dt^Y z+}XvtJ2>R*jVItAVmurn=lF?g|3vAsA>m#XkFazRe~hn$pJLB3iD+(NvKkGMJRHd( z5~z3L1P>>)k2u4#UKQYo?7A_6MzhDFa7Dg4-}gcMNAnSN|3DylJeVL9{4GCh!Vrs0wsu-&{qM4^LXmP5yjc+?PrVvdctWF#EqUo!*$OS!v4ec zy&FiKu;RXse;xyi;CDIlZ^}O?#boKy0EhFu^%j5=-kn56k@=4TRxn(C3LHkMB=c+% zdHRbBQP3iCSh0!H_4FGR5etYYZu=f+616Mtw>k zf1G;ZKkZ}x>EpxOKTe2(XB6Ypz7w+NPH)0EUM$|y#A~ckddG)&b?C#HG-OXBf$ouf zL3)VMyA)2-+wWTpfA4=%EIoq;{I3X*bEmYNJ}KbneEH^VD*=q`ruIqPtcl5G?hyLu|5Tr$pf| z$vWWS5~e`~dZ1`|z3>uUaIDXbhqf~NP28Hl)t zzFS#$@kiA?a!GUB_YO#Ypy)^*b>iU0)0jg``CEmU-j5KfOi{tu0ZtB*C{}EmfF&g%M zZhMfqDHxk#YW8N}Zff>FJ+lAl(dJK&HZ}XQ{}Z%78J64?&Hq=tmtVeK=k9*{Q@uZP z`C)%nWPF3JJ>y#nv9PdmGIIXElTa+I9Go05ObkpMtPE`bi(2&5^Oxj2!<+U8FME8@ zDa4{b2K@pp`&Lkbu@!{$TkxVQq7ncFP3h-elj7dQ;U}-($AQx>*&2>jR2XYH={eUP zybB=ZOvEjtqv4|(5Z^oB@83KqE50Z4on0iF`etxClms3-+Zyln3 zEvMH;Z|{X53cL4|pPpiV-!gtZn1+7)?*(}9#Vy-|nD28m7sB5KwL}R0y6{vv+hBEA zV8VL4 z0xQ!U}|oiB0ph?)0EHl-1kSm4!d@0 z{;3>~B%OHf$J|s|l+XvpzxkoY_`K}P=9`$?a-gYqrwx7Svkk@yXx<*}J}k|xm6_vy zQEjux$^8l|=~1(X(%9+AeA`PNVH0hwEf>CiYCGfVz1ex+RAcys2ucB>%zE2@+7%A5 z|F|uAk1k-{$zhI{^%WVk&CkKRY1K0HH5Xwn@Odyib}D#Zxx|4yVn#k9e#wiqc_PV< z73|}uaK@6cHN1AJcz*S0BT~ND*f`Wb?!s^;9m|UA=7yZ{rIQ- z=&bY&<}auQZ3@uf%k_p4%oHgE9Dl(OL3f=q8P?&={x_^cg5Fu4kWGz-)OXg52%PIK zM0cb5}Ig(6y(^+;&6WpDP_iR7BheCx=%=)7}4d{REs${Vs2Rmb=daHBVG ziyL{cw#0BE=)}t(Onban5O=HTZN#?TN$F0f@6QIj7D@&Lw48uM9S%d9cRza>5k9O@ z1?MB`$ji#=u^Xe|PK5v71>||O^XN@gZT|IPd%y)D6I#j1h&IQZba@&C{RWPvzb|`r zN+^WHI7gb+f+bPj1s9qFZeYi8zR~+g0vf!E^I8nM=$7Hmb&3R*$SP_Fv{uqda-;M_ zg$mrg{aQ9N5>i48q~XeEnjI_D=%Xh$2!b}S7e_>L^0f#X%7}#aF#sN_6&((1Y003>m5cAr zC}Iu8S{CIJ`-ZN43ie1jttO!lxlWH^tjXgrrJ@y6}RMyO(!1qGr zvlU%OJMHw-2wEK-kmS;44En*3)%)h*i{YF(d@Ng_2;f-6BrC?k-$$Le%MJc3HFR^x@3%io^D;Lw4}A9M0Qd2({Xqm)Ty0}hlm3Z8~=MFLaZo}XqA zEOhE1o-pyHXuu$zPM-&FBiTioYAYbark2;PbaAZMrnO3-4u|lOGI=#lWO<%})hd8# zfa=CI?E=>EadN%gEDb%zLg^oUy(s7>@U_&{a43NpDGoNhr`#w4tFHly`6>wrh zw@D%$Hl!~$`!I&_Yr&IhVM(s3PX2QBxcL3t=OOlZy%lv0(@tEDWnVi-n@nX8_7wZX z-#=n|ZgPGi3K-haj_LVc=jA%Z$M5QctTD(zXs?NLoze0#fku3+_%@u9$Hah-e1X@W%k;pOmz)Vtdj7guY-<3bi_$5`A+qq+++ zZJ-Cens99{u#yKINVbS@fLjxJa07=!LUH`|y=}QKY5@SikePSr$f1Y(xnN||BX|*O z+w+-mkLy;jB|lY4rOLBT!Ln!Fs%gAHA+YI8iCchS9H-tK`8eO_slZ1o(Z&6bBbwRB z>bxS9A<{u{cz;fhk<+{-cdCInKa&~QVj%Kw(MSWynf91vL4eLaUR2U(%$N=tu*Q%s zJ%wq$kxRvs$e(~o2y%UbBlH=63ww09pwmx;YgSoyri|3yN~TlSAFf`oyt!>|>&|Uz z*37lwNT_D^i>Y`_^e)|J7;`E)&^xB3)nLLgcCYAUuJ(pfNU> zTN6nWTMY53a4KY8kUpo_nbzv~aqhqo7?rF@r~WqbUh3s<#%t&48Fo6l$t2yG^DT~= z7vMR|%IHbM8Z-1+#Nh_$pBublyz?q@)K?zeUR+skyWAd>J$9zTo+dmNaj z(;--eJA0}mC7pw}CydmRq+YhIaq;o+S#YYZDgaLw85vxnCocy~P)=?&Yg8`wdg(<2 zdLqQ~Ix%CNT7P`;M=6@OOD2%OC(T!u@lE=QpPjT#OUsH;8-xmr)+V|9{8f2|X30BepYB;CN9u~@7r zhzfMl#jA7Z^t(B@lE?FPZC`fVc3w6=AtW)Q>3k0K08H*Zb?$?XzMy=ciaTfa*MOjM zDMIFqMao;elj+T5Tl|hU7@n>^wyn=};6FX=(b6h~d99SE&5lnvF0ZaxmP6Z$paGu2dsb)dQcP zK3S4-IL$m#ON6q$On^g<^pMhlPLAiH<&f(6+ zeRk&BxcGA?Y2st>ASAbJ$uppd%oFwx`!y6^MMsZ~z+R6hkBs^w5q*N|mhNJG2Adz+ z9ZTjtI1J(d>FSmLy*x{fR`+X9?XX@1g_77JWeJ_4h+k zzoB4(XH3;^S<cNzwD!}Y0EG3H<(W*uN$Bq@x255f5MFcJ4B2k6RMYlKwrDK^Liv6VR+k$+j(<>Fm(I*wVX=VY70{KEy=po# zMIH|keI>{)%)C~4UIT#A>U8N(K-)o^+VI8H)g^}XFZkjK2%2O|KS$(-+8E9Zp{@QO z07O8$zm)4ZwsqOWOL*s*2?UuX!lR@v#U$9`Aq!947%8g}SES|fuDAu6mV!4)s4>;=TUM`0i z+`SHG-C>^u!EWz;7m0;@1~Op;-D@`CWwV**AN#GwOB5UVOP(ha_$x2;l~y69uHnEV z*mHUUEG`0|ArAqNdp(=EIF&E(OC3tN@3=+zp8FxYVVB$G61(+b-+HXs1bVA~)gwu` zEjg@HP@)ve*CeZgKm~&u5$OX-ruUAKq zj&LN+@B3p|ptwuWx)K^309d3u@~(p(9Rr%E7R-xoZ`99=x+t1u%?1_9(!!0$7ivS8XAw#;=`oBaUk!)j_MLtFi%RN%^PK(gZ9#@SoqXr);|@^Pud8l+l$b78U8nS7!dY`s`8KZ<}W45Xg7 z9&c#Cd5sMA@)J(9BfUm^-`E4bW{SjeK>9=nQRT%LPOR7O2Z+%gUeiv!>$pM_-|Njr ztZ3maJp%y+&mY1gm}r<)Qn00Q0k7slrD8>d!i~oZUWA~ID(rK8R*5I;r!KwuzGEwgXvU=ZAcQpp$@`yvs!v%k%X8)w$kpmIY0ux+ zp1LoYH9dr{Jag96BxbMO_+?MOw&oD%1WtGNv(VF>>x9BGqg|Y`tQ95g_}uM-w`PuN z@95-pgL}Mpc*lYXKO|0X`BVpe+DrD*uL6Et?_rUUg3ndW32rr#f_0FGuu3Z#J-wprOU@G~Z zQqMUnUwC;~2Q7YSoZvV7(mI2W&hB2jd2&Ga9)woyDsUGs_jZ5&e4I+HpXmWkFHSw( zdZKZWw(8(BG?V#3;~Lp-RlkJV=Q4w#8yQ(qvm8!U7%3TT00G&o2)YQ~X4Zgo>|{{E za-focxHs4c-kzBDf%RyF_d=S>Q6bCfLfz{Q)A)i*fmi|}KroO*raKFR-|=vVlD#1c zb#(PYH&5I6w<083P??}N?ZTOg($G8q-qgbvrjDGtE`q|l?G#?hzkI2Uz*mP&1E!yk zWnByS6KZXBV11vL2si|K_~gMIg64p&xc2)$;}feZPx1FX&tw=$l5Ei;!0?A|jW5{@ zNnDW4WADr^)yu-u%QGT}q0A4|B*3UOwv;;Uz2nA7a*R~tmf!2 zP%l6*f)lr7uL93{;V;@^B2l(|_Tq1QznVFo)A=tWKF)-@9gvh7B|(_;M{KFPDe*^| zjubX`fGR~|;NOCra81^x@s5DfOr}}wzCwBUZ%ftT%_%WkO?Th;CI zR{Qt#JJG1zI>>=fkcD|9eyodaDUTL5(TIx%T5@c&m{Wn1?4n$*B+m@OPW+G?if5{n zMR;IFboF>V45ru&Ulsw2Z5o#Zwp~WMF<`84CbP&v_TW^<)D{Ew;EL+m+o_97^thZN z%OHCGJIS)$9O2Xh)_@nGq)AO~ji0&mujd}#+mKO>KP>^4!aq$LvL-p%MR@*?CqhVA;q8Ao@vc;Iw#_3s`4%i0Xc*<2+c?F=@{~@-}Gg^Aus4QIo z2Z<&us1O1sHmQe-BW0M2_Z>JAPipv(d6ax386%JcgPg3?BgJHTXS8R)bjqIN#R=Z6 zu-As8r$?2(G|@MzFH+D!-_Unso?z@w60TBVt6nrl9T)K1vFOMb=G_S7FN;eSp~3c6 zD`)`T=n-jYfM>+0yZJKCo`kqUDm>K3K0;*^+TPOqj@VhjS|CzJ@${2sfmD0&l_wJr z7hQ)&SAM^rxDcVsz_C98CSQP%Z$yp?PdDkOq~#T^Jc*ljvVjJKD@RY9uF-ErIPD6K|PFL5fR zQ|%?eWXV<1ry7KH=N9=m^xk{HkS^%3clEqFl=2BWWef#*ezXYEfzqpzDJZpfH^rM& zzEuFm4YjV5dnN>YSES_U659rlg$1D?G=zQ_eZ*9@7Q~A>HPh)^%GjUcwXQ}@)DMr0 z7R9?lYl2&{25+2@+e$QH?-=nuAayy3rggjw1044Ofmm2glBdMn%vmo7Es2lyNkfvw z4&$N1X5zN&sn0O9z@5c6q@3?2#AuN`9+xzgki+dZNc4CZEM^YX+0EjL)5ChFaG`aX zES|XUake{Fk?rM0+_w+u=Y<)p!{~KU>Cizv);JnxOtULz*f=1m31HNMvjg57Pon;; z=Udooox8N7!zirE9X;<@!F!-tAWf5C>jWV(yw=s6?3Gk&!H%E}r|5-!&mfghLYyvc zQk2LKM_mlM4UmmuPdZFZ$Swp2Nt7o+)o6y2H&7XqIG4=3h`vbB52JZPYWgrplDXx_ z0QItjv}q9yoJTSgfCrprj;OKf0Hld{Vi?dmH15*!71_=VO%Z@eXt!9T-|DI_u6Ii6 z$}D@QwDEGx+{N`p#3w8e|AKRNBl6yOq0zPDxf`>0n89DNlwc+aj}W$Dv307bx6^fkI(-wjDxCsZg4!MU_)#?4-MzO5r=_hj?kD}KUNpsu`hsSK ziAGONKc15RA6fjn)1;s%ZtKRuAJ=X@2!kmDg~{L{uQ=Sr_m>M_%bQ$w4#}b^pLe^d zFRj_5#uu-St7mV;yZDBNdVJJIt4rFd;|buGWWFcY{?u}pLj!?npZ&>$foSfcy$vCU zKdt3TvkI4wTWAqv7s#be2n&fP#Y`i>LWYgr9Lu~y*5hJs zu@sgg>#QPKYZY_a6sxFBw2C=pKm`xgS7q@-wsEYtkT!MNWKvp<;oi?yT6M&E?!r3M zUCm`#daFo(mGeu4FWA^nN~ZkdyZ}}5=a_LVRbYiEEUyu55p`?V}Yp%EIs6L`YZAo8CiR4ze^_sX*4l%CH%Z zvLRXt^MauCL=y({zK-UwAdzhX@1-DD5pupr&aT)YS-cKo)C;I!&?H+9RJL*N`8?40 zbR+xKM)Ca8wnLm_ykmLy@>|EvNP0oCc8gpJfPwKQ!+ZPuiv}6j_o8&=BMXj(98C$@ z7z~yxXflR#7?3-cy3IE?`Fw^VjZ>kG&@K~Z-f=J1ybya`=~KM6AL z65sr!rZ&3HeL(*}z&7}Rf-jEVmO3ZWMMX{yOzkJ})3+%wYNY5xP|u&|&M&z_QSii} zsU`a{JM%|u_T2fa5XnWGQoyCbY(fSb2B*-ogV9JZa>_^?RwF^2)6tV)HO^x1+6UC? zY+i_tc6`6c!Fa1T71$`)eI_)DeE}rEhZSauF^mEh{sjxGs06C8`W?qr%LZEr*?)>ixU1Ot5Ja&Ca2Rf74j!?)_NHf?=a2)671Y*yf;iXEi} zd0-u}2j~0th6o6npcguiF3^c*GiNyqceXCnA#d>MBYwy557l3UJ|*!?W9I|Ce);Dd z)?-thiV}aZ{teZ?$*zy3GAc8&VeLNE?(5q0roLl}G9qKq->GPoDI9;LC%@~;4hbX} z3}n5mqFU^ooE)8$Ib^Mx?#@^MM- ze)oQ?u}GrUtk;7hqK;YwS%t9;{aK(m2*=9!j^U$@6L3A2eoM|XwT<%`NGf>)gQ!CC zOwMA944@xBCi==u&)g<#_Cx3`#C2W84*Q_mtgWjroug?+J;wlV$duVBg$1kPHGl_e zr}(;%^fZB&@`WH4k9_(vJ$*C>GYg$dMwAp|z^@}@T5baj$JXzY8i>`Uu11aQSPi0E zMzGup%8zt3;y6^3Xh?vj#8f5ScBVp7YSUNp!=7)$o}>GPgp!*z@??;*rRz00)`U;DsLAsG7UOYNnw=fItrpFjuqo? ze&Zk>m!gW7Z101F?l-e8vLu|n!`&p5oLtnL<_j&Cb|JJ=yTXC8j|qN&u%B374(v|Aj~3K_DD)fM{M1ZVlm?|Jy@%7YOgd-2zo$H%Z;ri`?#;TRAQ z7z+?WAULDo4xTnoHd^~cuUh-n2)$y_mj%y)b`bWsF=P=)Dy9WSWyl>xXht{LsbL|Y zCE)d^F+)JKCg3$0e3beo=bL+iUeIjPGDO)By2Gs2?ae*On|O1BDxP6qNvjAo`Wcy7 zq!Amx**lyS`EY{tnBMXwI=sNkn~mR#LWjk2F;Se;^uzWoQB)l3m7;cKXGz|+4_KkG zf7s5+z5p$LP`Cq;TJ4-$ARzwu*z z*1!w>onM{2hG!?Q`3FZADDwOkWt=hDqj?OEcB@tNniZ_BFZUul2UNUHFdU<0T!;Z2 zg1ATbv2;U9HgFU^BWVYxVj&=OC?)xy3j4+Guw9l83l2r7sbaE+JB6*Ht8R5(TOrq) z`s7zpbdg;~9yN?^Q}!C{x$cK}1oS18GeZZ_kHfrqqclWgOJ? z3SAVoIz|RSj4|~JTk2*!;Se(m4KAwr-T~sYm1lDqw)D~qYK(x?>f*6HC$4D1zDcgn zyq??WMMF%-Qa~|7OBuEYu);o|lvarp4yW3YWp#nVmXb7a!t~&~S))%zZkTWImY#=1 z-8rTsI;`2-w|Yhrh-i({DJ^tL0{yJ)Rwrwu1&!__{@RTi{LN^TN+%k{XJxng(ngz! zHk%8YY^Gam+6^{kdr0`vkbzRE;=$6CG6S@q<}JJ(J*+YLS~@-LNr#fFbM{R zWo6kNFN^W0MI#uDRDq793r2;lIKwi;BCD3uJGp67HM8p~Zp+lnuImsGx0`EOb4{-j zla0^HE^y@;Dx?~K!6(M!HsHQgO*l_iX~Z44(}eR%nE2K6!C%ZrR8{dLfv6`Lh-#Nj zw0mMB>Pb_1zRo8uXj_k=sr{)hBWqCPR}+3!i>S2w%~t>JyD~?AO&8@oYxavix8~Pq zW>lD4nkQTr$1}71MImMrV@yYwO^t0~k>;`zasaN)s1970$xcHwg^9)F25nTvMpQ+A+v2HjntEa|1oqR^Hs00Ljs|bq)chCaco+n| zj6P^6973zt!>TVCBynE{u~c@-UZ}JH>cP)){Es-mzco-&AIYXs%0*GA*{reERpA4E zR4Ibir_9{7egK^ddY<_FyuNBD8vYMkyZusTMDU5DDz1H6jxV@xr6q**ZLap4R@tPaX?a*r6Z zM%ZhBdKpwyr!~mwer4&Caml;wJsDdQgNV(hBz2*Dg3xOw&REV|OmaWEvL9V6*u`#u zEbmmLT4XeYzhv<|8wWZ%!UFUGbqIxx{&TVMn^^yDqhGXu`IAYm%l@HkduPpA{Sswz zyXa*Om9px|x+N24td_BcKm6N@3+XH)$FzI+B4WMy3z+WB*Iz#D!K!PAWxr(Mc$QXK zw(2BfM5HJr{m;ek7VgzMv>WQPac$?XlnUai_dUTaQaVf52;7q_Bx@V*hHC=?L%rQHwVT`aZ(Ax>uRBq?@IT zW0$@#5s98)ZS-yPN8{++qzM5k1O_E0jSjxbTd%>VaFbXKxY8)H?`av>YyjM zXjhsj_V3}>dTxzLH`<>KqNs#XUCSRP{&Y48#n$srK)DSa?Wxja%`UVFJAB*aFV!gB zhB(hv`}e>M1wH&#eKV{iCebvI&onArduV%WXgIfGlW_1jCyEpsDca4%k707_g`ab4 z8h0{g5w-mE@=t&s&atE46bv{~7n=&z*hV88Z85^_nvYf!YkcG90M4AJL9lSC`6fa? zUYBDX1Qyj!ZA-pk^ZQ*%_`2k*?QBnX3l96;%sQ)uSv%OSZ1OU8wutmDq-@TBozQwSA$LA>;(=O*ku27qi@<7NTD-7Czh#KUMVuLBCPyi}t8R zorgq1U0)F%V8@i)fjJ4)LmF8xi%0UScv`!|z-`XgargZ*HZsBEDhbY1cfle!EMF75WS)yz0f%Uy8%%$e zb$G=-ylym)+HWzLQ0wSdbb1HT@8sp)X%(t(eyY%t;(D&(@5=i3&(^Cv3E!`OrO(>O*M@BmEXW06oX~|5TO5 zYETcpawmPZw42-1{}h<-#lvb<$b#N{nllTEXD5S={7%MjrFepktHPpyN9V_nVkf)X zs*2sDS#C?=CgmzA$EnmH3mvqTlpWh*Hf4a)njzl<9*B8Z-f{^kI=fYJiX^48BTUbc z0n74UNxGR!<{u-I$6dTP=ni`oQP?W;k!Y2~d@v|jciBdENg-{b#pUkFvmmQrd;?1| z_NF)N5s!tfyFa%QMO^KwE+Zq*MHL#?Di+&4%e@6h%vBUiod~RLUHaC{ zU3)p?^8&PQ^RefJtO-IU_`JaH;V)#c3h)xTxoNE~ACxEDYpB>^fGb zHS@@!i?Y6>BTiJ~yTMyu`d6YIFGhzUD~^gvN2$kTj|2mLM3X*y14*&c3+}`a^XY~& zZ7Yj^wAxkdTZ|$VAj`RpibkpXK6byknxK6~;tIz0$@OD^ez z(}lc)-cUk%GtJwjdIyuAH>G1}oXoQ@P1;+UN{C^`l4tioWn^Y2Kp8WZ&4uXYY4`Z7 z{i>8vmh@ezg6ds4SJ=u~?~abm=yYe?>_mxVev8Nw=8lLtLZR~Ru<}KaO{lgKPi7Bb zFCh#iirRdMMyy4YoH5W#5G);rVJhCzMfKS{8$FPDu`doF%RXG-Ofi4&i9CaCaX>pOh>m;5J6y7{0fA=ef_ z3MZb5p5KHYS`GlNTTVCZQ%;TkVFE-sWLn{|9m|zNp{7*mL5tK&_C{rl5{{|e_7XEp6?zH-ET@Ftbc z(`IDwxSQfy70EfT?a5uOPFbU^b2&|`K zQ)&4n>yE)I$beabvClN2!U4S__j?hH6z-ZBi&lB|H<563ND1;cyrChfqhaIxoWdPp ziccyn>$IZ^tPRLOcoLE$CbNA=1aTK};3nqyfeKBEvA`W%W7`3=F~WPXV1VxI2m5W9 zEcjb55YMC|_3QnFxdJghBGC@wzGl5EYd>IJwp@}>^9ILD>dLo(Vk!0O<42KtXn4r7 zUUX~WFH5F6qF#9k;>|@q3r+_9m9w$$%P|oD(FvZ{?dMn6ewkD2UL3qFFf##!)j53_ zPu?WBemH`s=%|K8DcXX;ogoFE#^?;OMWW2U=R>ACS#j$x*!~*QLny%4Spylii_Z^E zTS;D7fZe)R#9&e!4LVULLGNA7UBsd)TU2*xL!#yitBJwHgWAG$^~@kT4wY!S8JNwc z@?oi}rN+UsHn}gpL$CfR9QKMGHjF!mCza=;8O71b!OMfghW4~x%qHvQWJlr5%DRvP zQT09vBC{s*TlTAE44ImIed$FD3=_d=E@_npnQJ!?-^Ax(QNQ|}6K-ujhCk?lvk~Co zn7xK$Zbs3tBFD>&Fg`ayVF^Fy(8J8-G&Aq;wi&cnjbP~*oOzo|ogdVjl_>a1om)J? z?k>s3|Fvx7hR0kj?{03Zye=pY2xsJ(5e!#a*FVH^{*hMkbEcOq$1pm~{grY=5b+2@ zHBM9#df@2SFmRp!zP^*gueJzckT%{)VHOkV+iAzA&aautopCv_gPhAhXk=W8Z3AmC%R;`8Cb1$$4|W z&P(}4pF+^oHU=?VUPAEHeh}KHglZ;6ACNT_&0-4xa6n8dzf8mrgnjG(^B&$9p23c`2Xj5a!ik)O#mgSleBgk7F6fvDB$n`$3Es zN7YnWDD9Cp4xiuzl|~frk#;#C*aYdev#duR! zE=m4HLPH^uGCX;7uxTOI_geea$J=PP_v-lUZTFz@>~MO>`7L^ zXHQH)X+%S$MH(p^XB<)%ufyyFli=>zL#LxaA+ zbIL-|kd{T3<~y``6`no0V%TYmN=qX7TEnsXHD?qn_MPxaWY~eK18W{?FOT-(C!!|5ZRe-iE4F z$bpCJbGJfAu$)^F7jw0SyHwVyO(bXln0`#3KfWFOqIIz#o#|7=_z2EC*-Pp<0|=0?wme zkL-lwE>5)1;@6_?> zRAkmHX;xhLJ=xZ3 zMo^015t5?Z8 zRwF8BoYE+Yr_X6Ob;rW}$)*Er1`n({-u7fM_*%BHS<(Jehe@!*aj~zj`sp9vN24ETqX;z75JJGOTji>iRJxOfp zxa&_bE`R7-!G9wa+S$~>V9P;IyIR+B@TzND@Yaj4W( z5kL~OCKbnp6OELl({2Tm>K-7;s&Z~g!nI27(b`&vLlIUnA~z@Cz>3xOS+fasttb19 zgVx!}>PgTS{nIvTHv7Rb7LC?}B2LOn8WRpFW0VgGFuv6E)!~lVe!swr1)tJgSXuXD z%mR47I9|zxTcYrUIhd7#&}5zX!VVvUY9zq-$FwUjyB>z8wE~u_umGj4vW&b+*2^AH zgLS4iCX#YAVIZaLvPy14b`osz<^^|Y9{!l`7%so)&d*xrlwqi)~BB37*fprpba2<*gMcx!Q_hTSnWl};@>o}kBO*Dhe zgE*rM*f12HP{u5BQYdEez@PXbCbWDXcmPiaNWe7Kq!Z+r%cM5-d1PkhwT+@34oKSZ zQs7^5WZ9|lB!4>puvytU|0H(4EhJY@>;Ne)+Lc77^P9N1SXVQBUfU6=YTu@+6*5Zg zkZB}l3HF8(+H*)&n4iQ?yyMVf)nB!4aeG*{rZMb;t`>BN$A zu+k0N@-PDW#1P0QSp+meU@ZdbY}XaYXJUJcj6MG~NN1`U6Z{RkS|mB3;|)4hNCqvKDv{#KXR4Js)AgDx0a6KQA{DU}$8Nwe;F zh=wntV5%tWGPJ45dO8~tdZ!sHj_MYAjcA~lAR>-@_CT69@aoocYjnN)YYe9Zlz0S7 zbBkYk{&lZsqtTln{NZi`nG`eLE6NHCXjHAzlw&G3AAP#fA$N+d0Qe+iLky8# zE(Wv3^@I`(-;JXXh8$p?C^hUia2V;FCDaExZAV&oHl~avdg5Y9u27MFLSNdSGX%sT>ZKBcn;UfF~)Y zo&+KE`>h|gMG3fu!_$rJziqrdE-%^uSlY$}Zxmd6QEV@K10Nl=<;3*a7F(kLt+Ifr zo4~RIna2!aX6b-Ix%JIZiNC?odd^s_8N>cOq`#p*MU5vQthyeBuSySULZjlhiFXZ0 z@$g=cjSS_{ME=T02iyr}a+O&2`1@xs+Pf7>{^fhXB*4)fyh9w5sf81{;O@jmOs0AF zac}DK5ZU9nw9BJ{7r3IZ20I=KUGm+>(1wmzKo4ypQD;sonvux{^X%!<$IsT#(~p!a z%58`pDux1PiTAkVjDU|sCbCcdZr;F$v*n-4(_>CQVb4$0ZB^o>INuOYE1LPD2q?3KL90$Dvu96g;y@i;>VOJ*1dLBFyZM-0YA~}I>)JS` zLNtaw1ZRQT_WR_xg?^Qu%n)ZI&%y)w+2ik@FqHW_j7FYiQ{|Sx#KOSK^yW;0W$z-y z`qp}R?om08?_I+xy7EaP-=^6%ynW^Mp(M(<}8d)Zs)yBCJ+4(}kV@=W{vTU|l9uLpU zDeQ}@;2Jqssk^5DBRYIV(zOW~0I~HqeaYEZYB&IjEGr_x;>|8XjI?SGKJEX=nPN6kj& zgymfqk8|aT0RPYeeO@i}WJtTItIE`)LV#8=TYpBOWn){seqrH(A0ij47fY{ipinjt z--)fuFIjiw3NhiN3|8SQWK>+-Y#L*_SameiR@g|+9OlK2$k*06+P~_l)lc1x2D2H# zb%;4dJm4?o5k2rQHh>ntn%{kAMFc|ecZ#tJtZ=a-bV+y*2r~jE5Oa$UC~`Jx-vEEK zAf~pc_F%a2M=F}O0>v6GU>M<0#mr*fM2b5kUEq45kg517;yYHEq4|_*`!YpjRq#uT zRL-fdDW%kFob0vFTBoJ#(puHz77hV5NXumRIvYabK0cxJ*i?7xZ{&u~)~$F-O#WG3 ztS8h&%hg&GL+k35jQIhuz2m962lQWS2 z-QU$W)w6c<=wvVR+5-QX^81Ze+X2u#Icm47d~K%jt}_y;libl{T~Ro5OY>ta z`Y}OPEbsE9Bt09&h5;x6~7~R+G=Rxth9m zwISqK&z`=Hup_EGn(xw(dnBWm@k5xCxOS6=Rff^MLW4&daQBrd_oKw2pK^~dyZj($ zy^5#(Ai`HzA7F`-)7CC!HE*zcdDEjy`DV-VgV4RoB`tWMfPqnq-04OmenZ- z)_iEmk}kCQ^){_4yx6H9`m2i#B&!a>Xwom0fv+RW-1?L4=bv);74rj#QaSelR-8(% zlfg?}^oOWQ5~ad^Nd*G3 zh%1NLCsn~+K|eQIfV;#bmoZiU8X6^^eq z@PIevYu&=*obsxrR2*5^s1k>oPBIM)hy6G+m#&-D*{$)w(@{H9@;+f(ef!GNd0jW> zn)AGiXt(fXmyL0C8FSnMhbe)RL4f@P4ZzWeHq%n}%GWw>2TFbzdHpW1{@p0dr(R2t zsmHPOeXulr`W|I``*=HfpW-&zf+kxWEOcR$&Q(noAh`<5VOaUXC}tYG?+=mRmR7NT zU%RuAk9PQu!>pk2&XTicKY`ap)|0L*sWFWFsB)MjI+oF?e0A6#<~hw-YB=}9{%5X% z^flqpCi9{J?l()F_y%1AygrAuOmtYi%$syH$q`f9XBWtPF!M%E4Xkw%T{9CY+s>R# z+3~Nv5^^9e*!Vq<*8)7RTiKuyK;9Zr=4`?Toe>g#MhktJ25|m#mQ@q#8-Lyjh63L-@OojXJ(A-n~(_B6zrF01(w(o8gxMwiXyqiQ6H`BIG=z4H<8Tf-Im^9kfW* z##J&nwMxdKQ$3tJtsT6err?9ykq=VqDP$SFbF*CEOcGU8>8M#HV`WCQ6oHV26>B2v z6fH5rWKxyNoX7L3gi%%v5+=)vLOIIp1m02k3=5#oS(#L6K26W93|4cdmkZKuH)*x{ z51w$@)@RMTI`y-s-+sFU04~P-x7MO)(!hIG*n7#@oDz8#&K-=734XLZYQ>rpk>zyS{j2b5A4uA!=s zu~lJXY^)+2_aCbdDRBB}Hq2;X0%WcNUyd=m8SCZT*5>ZJRQpos3x<`Ch?f09dV6*tTZnf1R?HIA#5>KUJ1Lm5ojdeX5cL|6_ht^ELq1 z{f{_Vak0`XrU?pDWTzl$|Xc1Ujgtof4*uPw_{=RLPX-PxpEy&}gG~Bz+p|d->$4|XMHX1=>>^b)M`$KDVX+*N z2~pS4NnRk$^x#=fF(}$A^FH%gAhuvZn;~LdhLo0xGts}}D=J^fFhrKw5Z85#d z;$G}%eh*?`((GP=0#aaaNuLwf^FS0(kYntPE?<~^@115B7YLbo5l%< z4VQ&xvuOAkwaYGvZ!HpMa*5doMD-schLJ(1PSw6 z$2EC9Q>h0q;}mTmGN|oGY<#QlZZdbh*-B>flfLul#b0+1PL|ty*rk=dM>6X=C&DuX zP5sVwIEQ)4ko2E>Y1&sxoh3o}{Q0th3N58Wg~DS@sS%p{8O|<;!NhFzvr#PJc>JnyvfDh`-9y?-{Ky#H+sX6rT54)?l$gWaO<&xbQigWqmE6EN zS*7vDE0`n_5(8KH(XcUzs*_phMkd}5b*TSLl2{{3OqX; zhM`GwB%{V)p5?)(b4#%GE%N8cxQ{@v@WLP-nV1>YicT2fuT)MA3a($ z59tKe$>~^789mhEZp*Ib1fFZjZhFI8?>^Scru^9~GD4qvSF?@hGR)<9wQrO(g6Mfg zYb3K=oZ9C$jYNb)*i-02yjttQXyo^So%fxyQ}sY8$EX35_Yw{wGHZ}skT%$|nCb-c zUM?~(>y4dM9D0*vIF?kmJ*u-;+A54&lc(O<)poTY1WXU6T}srdE7`X*kHo%5Q9B7; zJr%IVVrEDTmMY-^llMvegR*EPDzSma-w4;CektBeU+f+XzY(&bF-onUH3vOMXYt0%{e}tsC^WQ4qmLl zPg$ks>Sp&|p6p>zN(yBMJ*`t{HuEcWY^kd<6Z=k|%M_eaX2^0avF!+Z{8dzcVLShi zqJUixd2}u&p!qDtfeD&t_m2QN9nLH8ReDtI`&YB;yaT|gJh$R3WXUm~X8i9dbiB0S z+dp{wdQVgl*HCjx!so>IhHSlG5!wcal4s%@jNBPTedD%}VXR}Bt0cUC~=OO9h-$9n_LY(+X2aFAb8V0^GTk-LP|d zv)BorcYg&Q@SrJo8!?5;8A5n}d~|XOOTEvY=;&oV5yO5Bgfw6+CO{E@SYmdGI3uyK z+vbX~8WwHXFS$-3ILI=ey`BRp6`97R0n*|@$8&Lq50h!7l+UfvDp?29%Vslqj%4fr zvjtsX6ZCz9{??hq5+Y}!I6?QpmF>u56OG!iPD`L=GqkVArFIF4# z`Ju(P{PR3pQ@w!zZX#%hH}7uiFar66D4_GXP&epuc$fXDwfL%>MaJ9pBimOxxdmr%cN~ zv4mxcV0~2#L2TOf%}{^_b1VGdxh|3dXj-jStztR*6aRk7>Ba#d4-*|K@HZTqoesaa zxPZ<(g`Jn!#yT6z13#7o^#o)bL>R9Sj3OwPpYCtVNSNQs&2)!_)SyVvk+mI;N^ThUucD zOMISFes!e>F>$%<7If!wDPGD8?j93=?o1Ztk-%-AUjJg@gT#POg%1-Sqru=e7H84C zpZJ>CB}^G#1OFoCbTth*pwh~9XH zEH5UyayUDjlc&aB2@^yy@9|lS!ZY?ci|4%O1geRZ+(l)?N#o?#F0H7mtwZ%CaP=6v z0M=={_QTWKT?M$m;SjijZ5ggi-nFBKbVS!&c-8&V|qRoE5-h`Ah7ueem&E_XjMRkXgTd=$pu0&xjOlfZxpzReTTD56v&jUe9ZhtYQ+8Ch(v(X=X5zuBIHQNFiDMOpLxMo2I^CSX z7=_@}0V{R_n7#(p#&>OfI!oEQ5l z0G$Q`1QRWGsa;3a8JJ|_Uwpc(O7!LvGAAC*8%$mZgPDND1q1dl{NB{3aEwHRlH<^_ z77P;RR>L8$X`EzztE0m6@nv~(fgU;^&^PyBC6fG^ho0VM*{8Ef{*$vq;aSuPjxQ!p zG7pxD=hddbaetk`mf7Ci{Id$1_XO~25cC2WGf*CGs3=R|2du}9PNSf5othn4p&eKS zEUp4q2XwsJiZRc~P9p0h(*4>OoSR=2-H4Elo_+tWJikY3WrI6)3MCi&k!bR9X?oPv zr2#pB)Un1r6d3#q`BgcmHb-3~@f&zrD0VrFsTI7BU$A5JxcqN|i^-Wn4 zCtHWzHg$c@WPo7%;5v9bl9lMza}u?!wUb8>ZU^l$y9}=qSg=e6$=HcDYeh}R{Q$Vs zr%Rbshadfq7s$m_H6aqX&#LJAZxoLNA2V0?dKe~-+y=;v^ ze>lu%B5{W7rH>XtFYCouYIvLg#jDt*n>zDYIIMMUM2YmAB@_*z>-yf2eL&adDi_&V32yaak zkc8t`sHUNP!Uw@~=GxB-{UK>=kOmu=WKq`lF|5sG;}ZVJ##Lc z4H86k44fB!Ryx2zP}ED8&|MV)z;HNkS#TK^F90nn%@XxxI8?9bgj5TWl)uy3FG|i$ zvzaA9I^hzCm7oWR$dtKD6rn^>@a_^I4eJ~)sOrmPHf4lNP0wYFOujq8E3gd!xlz1S zJ*vk!XFWi|i=hWYZahFW;ES znNB<{$kBYriCWBq{~HEA|AJB)P*_)y`G;Ln%6+FUx8`*Lp?1`DWv5sDXS4eEi=7So z;_@P~4IjxkyCY2QtHWG+7+D<;1(dl)AYkHw&6;r&_M5BIvSFrEKE9-&r2+zj)W*nN z6EAx`hCp|Og8Oa(qU$Fzw0mwYIb&%`hL8IbjD`s3BS>{|&Dbc0{h@C~J0v}iT~w5K z!;yMwHVuYowc3XlQ?_8Z@ki`r2AIM3e4~m5%g32zQ3<3`ZBmHg7NrgLfP!?h;}9AT z$vHvW+SzDq!(tO!(s`k=iRlK$52Q{8gTUvT-kNCK-018kOD`Z6V@2joDv@C;X~@@T zW69kr({Fd<69-_nJN~pt;rMnbCCp+KmJ`JB?N_CTN&T1;=VdY5|K*)9;;Eh%TU1Jj zJ4M*sFvq~sf+$}kCX|r2HV0oEEjW%J@R^8SFFawri`7L?L1ihc!c;h(g zbIkj>l9-CLWOeob>f#m&I-d$=PHj=kJY7+QNGP9^_<1wm{k{y5)s) zji+vX`q#6&FTU^jx69WLMvYAAdYPb%^CNRfY-Md58oN~}om&E9`{VC@OsQkS3SfBQ zXojgIP|>%+hD`T@JlW}%#KUamRNqpxYg>I(08%0ijPP$e1E};67;qcTLFOVX)axqv$g#g6)+Y&9FAphW?tx+ByI|C2iqjvYC%`if~{RH(TysA)(6IN+1bQtXm!QeaSDPkF->WiS{jrY-dHjn73g~~;K{0nOarSP;v%4P5J(v@sHjzV(4k{3Fz%?AbM0O_!g+R-7VL8csQbpQIujnT-7YGp+_ zDx5WpXJHhtzJ^&>Uue6bH>brV0UuOchG+A+P<@ap*NZ5It@y04FR_wc^_?c;6ND`Ke%X#?>SL=~5R%zm1( z23-;SvnN^LpFOc`Jr^>!bGc+g!EVN5Z+#wi4!;mPhbv$wU>Gfj!Vg4&1%R(&q3{-f)8ix@q@pmz&w3q23(FBJR_#^=RSFf|p zSis&muAaR`onEbi7yLD0h3U{qjmz%FFoLg&a}<9iRkg z_=WPHg}|*$qp?&?WD28J5qB;13nP!_){J496+Z^}+U~IL+LW!WWgx~H+v~Znu(P?f zLEvEZiU{<%tM{Kkya$TI8H=UY*IiZ`4tA{0_(NY)6q(_*cF|ZzU(44(voTdD~aY~Y>!-+Df_SoH_-y1| z2fg~^?dnx9RmfEh8G7h~2XOL*^B~;>JTr|PqJmhp13z>l&z>MCIR8`=&z@Xa1K?k2 z;84K;haVdDvnTc#%8LgaVg}*r$b*T^(6=wu86b*Cpr2MI7|U4#!chV$l0O~B(!5w| zow5vaei6I%+AaK==M@PQZC&=3j47MVZo8H>z5O&=~M=gb5x)z6=G4 zz@z+eNUr)E#BC~ePrD~)hYF@0mR&g+s^{Fby6j?3ns(&n;|+47x*gWflfl!H;le3^ z#d-cY$IZllnW4j14xMwJm!SdBr@MQwzt?KBD|f4L_>yAgo-|&gi+bmxtYSno+EB36 z5v783zebxHof1Z8geg0b$UX|ng_@W1Ra=)+VaG`@5uiFtq^yfFU8m^Tw&$Mloo3sb zdUoHTJ%@_>fVBI<4w_MsH_riHeS5v0KW2-1gAEg(LaNeHcIC^Ud~}=55wu_j*Z`@b z3?WO|eWfuyiwYzO&LK}!v%x+@mQfvA&`~x+<@C%qk2ong>sn#JnPyEzOQ8TLHKa{8 z@#>f4Ub*p`N)@&tJ|MxJ`lC`zMhJrv*|7q!=M?_*8z;b5z9P;$g^TTS`MHSS!Fg6k zJJe5@rD-5af5Jy)=_rWhHgzfZ_Ngd-O!m^f(S1}~-`IG*@f+r@UB9{Qd1L&x(SIIq zbapCh7kFC^-|L;<>KE$;D9YcVu%K5mw&+JOorvOjSQPNT%Vm;h!qu=~%~n3AqRW&0 z{Ve8{ry0kECka=vQ?NjC7b2W+H`7)Lp1gm2%E7=kcs>$w8t4)o=f9RAADLRT z6iT4vWb=3f^qxjjs&eQmdS?MnxKMr#phK@4E`tMcXP|`SAnAr`wfXr0p z$?hYRkJgXcdU-8rtYEZyYw$0DJg!3G-$If(+8n}hA9d6~OMoW<6c-5+8n+a2_)JF_V#d~$&rO!AtN>y;m3R`S(|Zs79z>HaXEdni$ttzr z^j#DzCLq5!9`z#7h50Wr&Rciy?H;B~-P=ESD|B)s>W@8h7=6>u*6@MNwdPTR?_z)Y z33~~jx|a(m%3^5L_}sSBBxPainF8W6h&+5Zko)|3Raxrje)|_yOxyy6l9|k6E2|3C z#+$C83~h2d!Jv{8Aj*?qJXIHOz!dtFWvEXIJqnl-jQmu5`2=-yaz5-*$VyTG;>{Zx zCFGSmFm+5#%K$0~g@oup^RyF$4B^D0TN;o}Y&4*jjO}Fk)Y1E7WotvIx}wvz zZ%yxoj7!J<^J!D(9G8IO;}HxjBbPP{M1r_G7z^tWbA)v01v38jFXc?#?^{Lxl5S07!%DXzGtXJtdkCG#o9p>bxIEB=T%p@jSA>6uW;Zwh*zRaN zLBtML$Gav^TaF}*kZ`+jdQnc)a}(W$=_O0^I?gs!8QhICzp9Xx$V?NkGz!i+qLPz~ zMi*5gL~Lhc?`fAt&TS%n3OS9O%)*r$P&r1@sXcV25sFYj8R3~1DB<_TX+|*Wb3nm5 zDAKKryd`a`&^$!v7EYuV%9%{`SxqlX{*#&G1BXmWOLZE?Um7iyloTiMb>k(By7_t+ zptBUDpP(Gn>71W$tm74m_<0AvU#yeiSr!Cf81(l%CLHspIsvIr$AM)7!|BoxMva-w zbqSfQ*0RA`1%g2guMYOx`R4-u))Uc0axfp1J-R;|jqY*nd&pmmhrx6zgU<9K&I3$6 ztfH;YP{maNGL7|*kJ<-sYulXu+|&hn-6u0{v{Z^X?L{=3j%Rc}P+|XW>`_3{xI&O{ zkD^`jJ-t@ZhkL^aeIbFoMBz2Xc%cxrcqH~_lVEx;ZX&k8Qv<2zRdfbGc~KEGYS;kq zvrHyhu;5r0lShPR{5mxQ&J<@pkaNi1KqjveSEdvI{I%}Jx~&d`EVEJAN~Ukf!UrHdA>khBlHGO}A5s)Fb;Y;F2-){B@K@aJVFt(U2q;!W(VExtrn1Q6Eu9b+xQT!5 z-_>(3IP6m)+4Fo>KxVA5gCFeS!K#a?`0+=|b9}Tfwto6{8zi~)b@7H1lkcbyt8{Lv zQ%ri`ioQREGb?3cS0Mu^?!Cf6*D0VeQfK&rZ?y&tToN>?yt z?{fN)%u|v{91=UhCC+)H9)NRU`KEF9zIm?ch^t~SCCVyGhFc(v%IREWx{_jb)7-?+`p3RCIXS?<5e*X$)g#$g`**}**m$$S+~(TXtc?UJbj9b z?9;tW$As4-?PqnX_C#EHy?3{OS8T2d7=9JN0d&7Z1r4t-rx8peX)`f2D=Eh10nAD= z6JjDinrQ?Xl}z5L@Bz*O#8xSUf5J8^ItEPQ0H>c;{=t8WIY_0E$3ZT)Dcfo!vu~?( z#nLhxOy6N$F8trY4xVmY0rjM{>&(8Id6hAWL^NsFjz-O}%`u@aeq~Y6Vh;_-j2v|6 zv(RleHAA>8Ki%9SFU}5HyQ^fDTgH`Q6OEIX-8ToAy%{J~b=bFjDPHZhjw#0?@` zEN(x>yoc0%KqcH5^s5}0siL@Jixis>!A~b1hhpz}z;(mX0sDA5o2c~MvvKTCV~#*b)zt_u zOICPFyW{A~^6gXhCaCsB@qBaZY4OtWd|VO6rE{anZe$V*R+V*JfH{QG9(8xt!LW*7)*vVw{4S43HU(?lJAgjx71HwskzEK`FW|dhuxn=FJKT-9GKwUbV2kxordyX6Zqe;79 zu8r3LBH5M~iGzHxzgtA%lr3N<7y} z@cOMJli!-p-M5yo^(itYOYNPU9GzfZVqv@#aRoWVF6%5qJ95d0=4m4m#NH1|Fhm|8~WdG18k!jfhgW;Gg5WoADK zD!TdyDrP9^HL=w^^kKit1;_y#pLeoe)Qi z+5TtzS4;)F#>6&{JlevgU1CVemPam-Cc8k5uw~H3mR!jW&?Noa?|ICOMo-H;l5}tL z*)1TA<~?W5^Lu1!UJokn_9^qtRsT~X$n6J_{s_*%Nb^rJ#x-5A zMYJZPT1l1As_XTFs@JQML$4y9h!cTBFvsU~95QMsmjTqj+A!TikO~kzS89c2q;&RmyC-&ry<6hFlNnHhf%exT-`hm>>8Kq&>-IYwJ)D=Kw>MC8;k2}$#WHo&Pg90Wt3orII7Qm z%mtU31lLUZTCgcqtCeI9u=1b8b9WUT0AumCc3ubs+5H|>5A! z@X~=5!gqA11Br7z>4Y^J*sj+MFU!xwuh-u_)4npC`}HF|+uX_SKaDimG3EUl&r`*N zc#hj+_wZkbi=6$X>(d5=?etzrEmhvX%Kjx0ODH!<#w5hYPw76$%>)R9jqEF(T1?hN zR-~%T-BD!_2^pYsIF03gdbjH;m$+RlBr zo!D1xAkb~G&sPGuOE^S3$3vZowcHxczkpeSUVN0j`KSTNYm2Ug*@R)ulQa#yYwgFb zLj+@JUnC)DZmO}i6Kfo!)OiIXO3k6tI=oX-?B;?}>c(RR${aysd+4L05Yfx;DhB^< zt|allOO1H~@OIfX3*+~w{P7XCY$N`tCSrFgpV$WFVb38f##I>ykv8tkOjzdQ@}0-7 zMgQS$>pye4{A#0duzlDPRHjM)t)7-1g2We=W9X-p@^_qg**W=VGdcOO(^00oscsrk zZW#!;v*Oiui~L!U6i7@bpzj7GY@OKoDjM}~#K)7SP5i*e_R#I%A4q~G(0xLUL`^2t z=~3Vg8;~B&pTMrbDr<8ZrMDCgEJ1-*;;^2zOmxmTHm6ZWA#0krn#OAb9CN{VoP@zt zC=;b=z|;th<*Sw;NH}FFWU4#gTen}|6Sb)yMZc-t!|Ps(37W8pVijr{?KxL|`0Rc~ zjVL_4oScy)j zKQTcerugbU;(4cQE*Y(#6Tco05dREn0I{3+Qv4#VAM(M(D>j>}luRXE23{waI38ol z4qeI`4OGIpL=dxzJl3Cweep`mgH``(R?|&DWbt)&3gsCB`Y%Bz4 zm%Yigy+BE^8Txfn*~GSCI!Glx{8&qg&?Ry^&Gc+vUpJl7EhA1P!wzCP81C(saxk<7 z2*3?g>Fypjl=-;N;cPJ4aFpq4xVKxv)i7lsoY<0>_Xf4d42&KGd%LDX4Z0BQ?OKM9 zU9pQoq}Y*_t<(30*Mm1`k9?kTc$aiZ^#)d@*ppP}FSq8%AAtA@x;7H5M7*K+1HtXk zRZTXkQF}BPLJ4yIiI>%GK;@l@GTn(H1O+66nCZ}bz<-Q8=K}xIZRR>3m2p3UGBhZ| zPe>0m6%B$;Nb*(OGl?G>4oO0VLu7jy!6dRODU^Gix1O|d!$%w4t_1NFXQ(7x{*AH+ zzbAuG&xW0XSW51Qd^O?PrOYo19Xqsd!d0vVF44iNkc3B>!L8?(a4$TJN5(Qo!T8w| zkVm0Q5t0*`oFdIGYThw~@V(u4WBLFY|8f>hOXGRMVNfP4uEGe&mtkf>zh{?*ZCNep z7hp@s>M@SE$`Lck!y>m~<2gmRNGBtr{4@MPs#C*BodUTu>Q;@zR`Qx1TKrx&%uTaH zRQf{|^`5NA`UI5Xo#PA*Cqv?^$^IuJXMAr2f~*52RgStV25=r>>SCYCrw+=M_Qepl z6z!$Z>>gcJCW{ycJWru${2}H-utVS|R@-eKR>EnwSILoB+N4h`sO0Y(hrmW0 z9&WtcYVW{B{$jJHtFes27MyC`9$dF9D~*KtEUUIsecIaunD8S-dYxhu{ zWX*R31H4~VeG3V1M&KqVc{B16GC0I6Z^n#5cl2iD8gsoF^=ru+V?H{QGlpLy-=G1; zg{R}M)n^$zZ&nBml-*sg#A7rtLW8^x@E(TWrTJa{MOJM2yWuv5DpyJi#hw-HjY5tX zsMe(nJp7FO_}meTWD5-t=NqOfLsM$#+5F(DF4}`DVgzX9{kotYTaEtU%1W27!#aej z%pCp@P?8EN=f{E%jG_uPNcr5t`)HT(y5vXB>H5_M;uX0|oLsz0!{JpU{Os+w4~~wu z=Z}vzUJ}|yajbuqLu|6HEMG9FU6+$rOHtYz&nMg@;8xgq5);>~SBis?rmn9F)WGu_ z@(Im5e|5CIzegUub2!RVk$ z8=L@#yY;$13f$|a5N|GtYmtCl45ttEda}fi-+Uw1YNtGp(mz&o`gRyXHxRhy9Hnd+ zGk0E17+P?lUHA)sTdy7;KW}Zq!ogNLtzu;d=!iJPX(NeEekX?{Q%IqJPtKQ&y3@bm zuD7UOxC7R!C-cY0?TyC2?Z)q@x0S!L`u3zo4Q-Nto1BV<%uw8kVB?yZ4v2LB#e09m zI(fM9qFX-hum(TLUn%+V27LW;`|#+EuHjOdk0a`CTCmWMA_k=yt4dE}WCcRwblNtZ zGyC*~ANDfK{I6NawDOn*HxG<5CVZw*$e1r?T2_<+C%;e`dr)d_lMN-Cc(HeQ^ja4o zZiW3{uN?GdmEn$iui<>l=tWfBx^TP*tHnl8nAoP4!6vZh8^4e)q%guHwGR$>Bbc2z z3T!V#?=w^qQ6jDmCB@=qQT||TCL7%z5gxAvhYt>6K!_N4yeS4m9(Ryr!eJ9h0`8+4 zX3sP;YWMVRgY5UR~{F`6ZDA zgMqOLM-1JAadpj#7xp`cg3co~Bagzq5l3vn@NOs&8_4YlU2!EBEWgLHo4TCjGSuze zl!Z3>q15EI9zCK@+HFiy*}-rQMeK-q*ggCOiqz$IQrkbW0~z-E50t)tY#P!`He&{& z#>ShU#c|a-saT{0{(wl2?a-mVugjlnLOnQ{6OTWw>C%gb{2W*|?*iIwF3e)YR3~gM z%nw~)S7ETV#SfRT3dd%}r|Zi`El}ywH-9WDHIi63`MCJOLr`F&C9(8Kyxs%(Sg3dK zj32BA zksF~$b^7mGvX4}nPK#`c%8u$M);~@xXof2oaRuY^a1_kbAG|E{_+_p3Nmqv^q~7)V zuf|C_wbCv>d3z>KkDCj}nC zS>i)w*71PbsL+Luc29JcfMdK?AsVlq;Nd5#U(0>*;Zs&ypHu_5o*2e5U;AJ*vtG5U zYq7d&YmAmMzf@cMqye><(t&_>bnvhC7RqOlio6!1YkL^2$0j5#OG-+^4E80rpaE=gUsB! zQT9<5SCusvdWeN}Wz2~G2CJ{094XW6;5{2}24ca<`#p zZ;_eBP-3Sm2OSm(a}pzKO*zNW z44)KDF|@c8{Je3n z4_AFfvR1qd+!84+^~?e(9M0Ehtt5!l&B}XlUXR!2!pJwaz8~ zK|8&CG9f^XOPP`n63x`TpECy@?{|FY@J``~vTajhcoMg4Qb2McQWP-5a5q-byLl{UaoZx*N$vZgn)%0zzPY`4p;N*ikWp4r12#bz-Kx3llx14D5sf_i#d~Q z;#?IgfXrMK6YHIPspUWl@#5v63iu$Jo9wBoQ$A0!W99|;j5^j9R zaML|Q8V{u)O?PC>GbMYtMZGf1L_O1Lf>ieit3FFtIH4agRg!9_wC-uD-nFE1jz1Mc z+YP4aTrADUl>JPk2)Rp_*~J$<)TQ1Bu56A!CmWu~wbiAJ(yz8#r47<~#^_g!%R1RA zR&=Lb^`+^#sL;^ulqkh)hq7d6oInFAy5QUAs6XAn3il76h-T<(xES-JQk$~c=)tU2^@kch zZ}9B9cgaq?*nYdawHl@KQD)R<-z}{y@hWIkxJ*p(M18j5c-$CJEmdvvf7xn9UdU7@ z3*|SXODSHVV`iepzWYwq^<=5qyv=-YKY&khLQ?ELUJ;D}gS0ecZl#9(BxA-5H&?aj z%HgRfG?oL=vIEn2P#EVcQ{qT_wt@?VEwq2=gw0BTOj%A(nhS_ zP&@yUknN9yj>GQKaIkAd!O(5@D z;~c?))SAWtM_a)KgHZ8k2-ufh%F)XP<_1X^BI(G4RW4WN_q#w(ZZzn?te9^!x^9TN z@P<7e`3=VZs2SM$a_5^=^kwUx($8k5(8dpw$J*Z)kHif(+!$@Z&Bjk}vHH{j= zkz;r340(kEa4c;jc3h+v`dQN~q*KeR_gA$8y= zc=2jOg=-+r7s;RSlB4XSDrBLi5c?kAf%2n_%FoA2L*5};t!p6+ZL{Rj&LQTCbELJ6 z5>((#4)VQ(_rZU87hwc65l4ZY>RQWygN^nxMr5NK0!C;@^ZCDfZzD8yG=TBUNgy}I zfD#QA_@+29zb(htVS zx5@N7olYCElsHixCgr*ATt54b!*OQC%K&x0Kf$Vp#C0oIMt)nie^#U6`E9(V+Aim0 zayg?*V=UTj(xTFDz#r*9fGY&z+WL{Mt(rpZB zzeG)_>N7@|gCqrKKOg-nJL_25dIf<%J zL2@NFqvU~j{~am(ukXHBVVLmO?xFa_4aat$PRG3G8;nfIwA;JE@VzTSipR^0{N#Xa z{AjjR2;=i5_b<>yudS{_Nfb~>l#GZV0+L`?nkDBq6T&BVus=tmofSWCY)?s#qFHEQ zum&cTC^;W#1}7Sw(;0Ragzgr4H6w$}+X1=0>+hbm;kH$tJjj`7kXW9)=KZf=HhrI7 zCu9uNjSo~0vK|4`<3bsci{!9Gc{}2%rX)=Zv zuoqFZzvz%~CI|QmR<)08_shT^4`~Z@Zm~b7A69h1-iDEj#?`qtu6{gP_HTU6@)Oe$ zg4CZ(0^smFgW>1~6KN18zGDZ{Qyv{8Hu}R$TUEgTUSxUT>M1&1y!Jq%lzL2 z!xY^9^5^+KF!_rE68$7wx6*vlT)vaU6CTY~apA0eT1dKaw_o4I|I&91g7R!bgG(yNev%q)1yEtPOFi_1I6b)?8+#Y+rcL=g? ztgG^PUws0D@}jk`ca`!~?XwC9JejW#kz+!N_x&?e%XLSF?5w*Et|A&-fPo&&z>A#i8{sj9QI^s3F@jZeMXU8=i8(G|^^Y&myzodSNq~#3LwrV64^9w*A7uf!Qh%Dm)an!0n9qAwM zdPH*$<$i&?2e@avywSq&K&#AZ+FNr4#xi$|oB0;>O6%3o@RFrjyBno4I(psb8%G+g zTWGdkRGV{osky9e*bgw_zfC*gal3WwR-9zAj+v{aK|vX+r_~bQPSHJ`0-m7jsn0LW zK1X!pF=uiP$wD{wbe8R|V#_&=GPCMm*(mi06T0;bk=%2xLO*;qrHu2lA>-WoJpWh7 zq=jnDTQE{cmi7-{EG}n}rTbu?bn>qIs?Y>|{M=ipfZ>x@sJuX@y8BIoZfVgVzMe%# zPMc<@*(5O|^HdXkpGP&GA&n3^6Zz6^we7zI)hVM)5^GZ^ld3Uo(p?yxl(OP>M(aP( zV!*gMCCSp%eV(8&)m<2sJd;VkgL|5SQf*Hji$QbH+FeVd6_b$@2|#f#2s0!B%&b82Q#i2d524VRSeLsiv8p7qkkBBuw(ci_Z)sPpA#5B z^y;*BTC-HYR8|558sxZC;}V48NMXKT^)q4Kulfl~(0suZ@1RI`U`O!mf z1v8TXADU7FQw)cN7+;pK7HV4hgI~+-@^VdCx?1*iQTWU3V-fnw2ySFo?yd;Y4wUO1WZ`e2~EKIfg|8fi@HC&eel zAmt|(P0P;q-p{#-FpRFwr5iI2#e@?fKZ*_oev?rnC6VG(Qe`isB>h5iWLBBE%KW|{ zSA}$HF|wc%d|Otc3OIop-9}F4;ZKNCRzBYf0-8su{v<)wW+}bTl9t(K0v9LNdNRkw zP9hOSQ38u3pw0^z=H09B(oU!|H_d@d<-U}$+8+PODZE2)^wvq z+!N-%7}&@{;rT%8DOQ6j4f&QT(q&j@PmNWibYf%>&~TDfC{oSI_%+3ZH=YkKa%bJX zdPmdy0Xs22kLb%Ql#uqws$o*j=)q?4!E>ud7>4u543>O~uO8Qz>p+1qjb9Vre~_rk z_)2^dpUm}ZjI-A+1_C(6Fk64RaY|v3u70vmr`YG*F(aN{x8J8H$mmiX8OcaYOZP*b zQN*!^F)#i~xkFwa93o(~I6Ym&gG;{|*#3(r%VKlmXk&4Wk+0!t8&Txji(%q{@ew_h zf0-3*b35HNY*6EMC zP8&Xe!m?Y(Rdw0yzj$%Dg@vE*Y_&hCr|lQV+ncBD=0f$fBI$oH_9*`-;%moSAg8`I z=0HHLZr4m`mMDiVs_l5sjkz_8vi;kb$n5t#sN7F#hFxNG2Zq{3JvE_p3?im7IYeEKGc%Pc)V9wwq_RqN=Th7cD6bYDfC z9;Zw@cP?DdBiz}5`-7RRdz1yKDa00gmaU32`{Q}%V{@Skw3{1~9f(2epV_j-^G>x+ z)!B%*52fvpd`RR3ae_AA8&R6`vn~ZJ+~?&IbD_`tjIyZ<&Ur3-#n7yEF~G#EHm1#` zdLo_ZynSBdyk5BAsO;jzI?_GcRnkyMKEJ5=C+{1#NA(yR1Y#5Wbk7sYpNu0-~;6vZvg1mp;Oh6pxxoS8$pIp*d`u`+=1Gs+;JY1 z0%F%oA`{u+%PqOIF)8i_K6OVfOxW)fcDo2o=s%*Y6_`qO&mX}K#&kM%_dmGblA9bg zJ(OhU+<#9#MKTLlj1;U_vgNT-ne&XO9h`U0*hAAQE^YE}I>*>cRE6^KwbAv(_c1C5 zZe>}+8x-gmcpHxhR8GF+opHeV&R|=I<3W^i!d4=o{C?N%1b*oEMh5;&Q;BY7tl2lo zU^79&UK`j*xQ&!D-(>qE*c)yNTBoVL^oP!(?iQorpsx=eOB_k(yYI#Px||UH*lg)W z`leGGP?d+=Y`U22P{bQ1?w>B-X!7K8rO}X$n$lr*Bwd?~8nTF?*x9U8|645tcmEu7jKhuX3AP{Z3FmoB!C{^nd)VP z5Oz6i zVG=K*PqWgQwQY2#fIWb&->_rU8Iw*{I4$p^Op)B)!ihLOURpjqZIZ9diCAgE->9mJ z9xN|4$@~Bd)1fP0HW7;d!MDp%Rrpu)`^U|t=E@1$DRO%T2bL>5`03l`W6^9jla;JM zCCg=N*#+7ZpgRA%=1N9os`uo=Lyz^sXp{C%ZTSy)&QZ|nevznbVpJ&Ii& zQ{r4;0~{RPO7r{XaveJvI8x}qYM3&ONr;ujUE(h~z>;SLQ~5LjP5Sr<30;q}7eWEb zt>|L9P>e*(QoToX7q5UDe@wMNLukzDAZAv6DetxiV@UQmvrdYNxz0#E5|FU&(xV^t8<_7kE{NOe<9Blov z%~b@>dlyMpxmq?31pL2EIeKUY^s4_ccd)UCVX*k%kNHkFQ5h?w;(74`+1%L)Gn{9q-sDs7o{Z0mHP?yaWp&9nS#j@QiQz`- zlanKF3ZY zUDr?fV9t<~jJ%x`!E`t%2AtY`RG8kdimQn^_2}{ZGO&H9*u&4^9Y=T`*6K1@Jsunv zL~-paUq?03(DAy+lxLBiGzXv=+Uqk~ve`A|Fvw}$c;Hn7R;GG9M4)JADyf% zef7t`;WTW?X3`gJ{Hvb(M`b3q_PM3M^tQMwz0Sd6C}p(CE0|&0C@eo&b5YMH#HG|0 zTTx`iPj=_sDgkgrU=yt33VsI|B3S(U76HX)krE);1ylz&U8b{<-Usxpi!=E5yCCRLgv63_(4<|=Ik5~RO;Sd zU|*ojfq%=$eB?oVVN+I5)Ed$pa1L=1z&HLNx?WeFJ`+E?&l`5%z3{M0(O6Vw*QM*H zYDn1N()F_!FIxO3QJ{CaGJ@R@V%L9V{Yz~_?vjL^!+ojC|1PDf>?RBvi#(U zcqEn|KUrD+_S=>3md=v=RVl)Xh6F3D|5|U?tuzVCAxT`#ANM@|z(Ko>x^fzLx6}(e z@K6({$kv57MwU|hV2p;n>{xL0jO@D3D55|K1&mJ#GO3~l7Q|!^>W<1o#lv!>>C&~M zLVImyHc^jMHM9GtN?kku4ZcPVYE4GwB}j8NSF<&hydzGapDJstHK+QCL)8<(W5ic> zw@Y5H{1*@eJ=fHLca? z2Yt0p9o8t3rgQsT?JBsH`3J-tC#F3Uq3+tIw!5Sr;Q4@X<@bA561f zR9i7ZpeO+~b=^Nc?zE6!PbN;?8ezOp^P3O_V!0jo*!P^YPS$FMIZ8V zP3F$3d@Ds&So}b)y;Z#rZI-^4A|Z7y&u&CQYSJWMnpxvq;U8q4?$r#Pv{F|$p~*i~ z0)Vt^%G2D!vyYg6|8VbA?4tZP(jg^dYN%sY+qpS zi@@$u52>1S*Bg&q_T`N^VF+L-fyZ+KsAI!prx%Iy;f9fW1687390YNpQuaXIpnEY6 zq-UmqO6kF)_fF*bK$W16Y6<5Dn8$~)y#968?yR@hSRmQ>A0|Rb3JavjzpSK(89sT6 zPil8Q+6RWoJaM3hfs5epKDPL*`TcTpsri`P<JkUb+{TOI?DWho*5N*r?5Qpt(dv?2rMTU2jqS zkukH}HzTfqE7?3kcUKzx$i83$fpZN#W0!UMD00{n;`tb1w5b7~Ymkx7Vbn=w*Fo=i znO9+S<$~00np1{whMSU~y)VL-V6txSubam)KOh+`&7*%wQaYpP=tOo_GQ_t-<;r75 z5gsrYiQzbK8YAa=6k|_iCnvF~>OP3^sFQ54nNA<2jIb%Np}+3=ukfDNJ5)K!OJh!M zHEi99>8}#8w$ss~X^ri-c8O0T;`cD#jKRJ8K_OoMmt zw3~SnfuvkE2ANl;ZUW#Sx;N4Ra=g%kfmxUSCKM;CAWX25OZ&Z}GNP*#RJ2?evoixd zYXg&~91vxFbi2YP#2wg{27%|iDS=9Re%tXz!41E$tQb|i6Sm6CeE_S>Oo^&8lSLE% zJ0MlGlihzUn92-tfccvkchnIcGqCa#|s_o^Q}e}OW7=18KtB%PjqEY6@s~?4wKn3{pwA>&aZ2xgp)I)(#j}+N;>wt zNF$9F&X{I8MLo`Qs0XHb@#$|vVX1E#3g7J`ml_ioqaY$PcP=GhsneSEyQo*t)es59 z$m%|(X(Hu<%HGF8+Q5lmFgqsfudw}vc1*5_;SWXbYo1^^} zMS=E!1+g$mplA%>zH?zaHAa31_Jgjc_4X|-++vGwa9r1mM~@cKArZR3a0DIFr0^Ca z(U%wfgRG~d9QBzpy#C!%{{eC%PY~br9YaSAK(q_EKDG#;@Z%e0J$%Y zvBR9mtoy*=GQQ+Hh>l2X2s&6WpkkaM(dj)9Hc%j&8$d;mDT}fygKXdW+1!U#>yu~@ zMQz}oZP0U7=*%?qHF^TQ8=}wAIf#xrkZL#xVd}NIRpAi${r9wJZDMdE6A<|oNRmR6 zLFX`Vu;*}gRekt+)fD@qvY6e)EH(`*#-`(u=-E<(2jV~%HK|^RN#SD}!7HRQIRD0L zu7DIbeCh}lB!UW&@;D+sI2<9KWO2C$ylA3s;gWWcgHtp$Z&)cdc`9qO8SGO0VG;x< zZDpL1@hV9d!sw`E-xi6}BZOIxHD~-KEO`)L$_u?5=9bBH#xNetzU6b*jOeg&;cy;; zU)Uroo;IJ-xuaBQJ2Hz^1G(_$&d3J7L~6LPiq0jRO*+p+YF`rI0DOWXC}W^{6vWi= z1Kgym$yunHpt2AT8O-bnBYOow`(NYsMKqef(y=;P9SOE|Ck^we(hIf^XkO5_Nib!hf1X&d8l~}pxdMvM5IxwAu8LR;DFfLzc++>s9VZH9 zP?4o2!y>EPkeNMa(}77H5b%tV$4wGC*4yKY_jZ2_44H>ygrQeFqY}dMFxa(t_MO9j z9kzG(H(&2;F}Nz6vMk?)a%%N+*|k+k>sG70Qu48tRr3VB;uLzDs&&E|{TN4!ZdC~t zPadx%b*Hz z`F%3wyv0HtC@-c}O2PoYQ&Pv2PgCw@wHm(z*?{MvmE#AMT2Gh=SkTx&s}HljMaxuj zK`ea>-02j~WS+m7+>xsM{-mI|*rF+5KpI zDL+HdEy?1kLne{nhGXJ3feZJOVk<4C+`&`E02qpyBG*826>j%CF+NhJJw*+MJ8(h1 z#;fuY(1oB0q&M6=-?uIT{j4#M~%be-W zh0rjeGjuig2ceObrED5|D=OphN*`gElTHHC#QlltxsVY8f#lL(I>)OE;^Sx?eiT=O ziMGvZLO)(lco{%F3{7caX-n59ktUTU2YC*p8KF=xB*0z#sSnrxkxH z?NG-4>;ZEc1|3rWMu5xJGdSmT92!?3>&ODuSr#P0)Tk|rlyvPtl9J%k9)^DRCPt<< zHxAxx@2LbOFSa(0ULR~7&O=?vdM>i_c<1>ry%dehWL!sCpQU>O)S1e0sTVj7kn-#V z^f|6I>RZ@z@b&Ym8)h<+0BMu6EC{aT~;^`e7&fex@depSt}ls!4iGTla!Iv;)rN zi}1usx?nR`HVmhnKO~6Vz`j5Pl$)}1X$UX{^BBKi{~R0iayY*JKEp34ZGfCwK$3Sr z3_pYuACrjp=v?Zqq|r-G%5<`Me9He|4}|bBiN5Gu`RS z97N8+OX)o6AT8hJAf>gWGnd1my?{t9CBolL9cR`No8lBn{|5$%nXc)HXPoR2{}+O0c?KX)*3 znP=-P%C3$&0&;&OsI-_@Mk91a3JpbmZv=>!y#wI5qu)u)p2QL(iW%NR@utBGJv9v)8~$~(g{CCXUlrb5Fx)0+oS{53M%p^ zl>sy$;SRWn6F@X@$FC&NT!shN!7cJdbl{d)g3h)8EH2& z)d-Vf3cfvMQ_Tyh*PNvCTm_3?cl#z0i(NvuImfvVm;?7^uuRg(AHLdJYV7r zO@~L|jeNqG`OS+MJoPf3nlKiLq6|&w!?@V*Hp4=Rqm&{hhqa%MPuE@iU07!&kM>y< zcBc`l8!^{fOU}ef^Sg$02eUF=ZA;^#PbUCQf3r>BP(Ip1Jsr_`_pAc9lc;nYMhb3V zCfctCmXcmKL{Iwm^fcp9lcmOTl;k#+!c^r`(9{`q9`Tp59leJQcWZK1&+IzKDCzs< z_844#m}%I(7cYp(#*5p+R%EOZvy0MsQTsoN?Y-@z?Y+aJjlI@Z5$Y!NK)E4qZXLD` zwqG5g2jYpPN}O1QFqzT!m@ueZNlP4V@4ejF5_|i5hd*r`Y;BfoLMM(XF6<1hF$1^W zpp)vxZT@fcCu{t>6O8DW^0Y3$;*2da$-fGE4q|wg#ZuLqc2Le}G1}z4$5Sg?Cc44H z+~S=%_GC1uloBCey(Z#3Ix>u1`*UadX#_wesW?6 zJLKcY=q0Gyv%4I6fm+zc028lZ_x>wS>mW)i^CvjCQ`>Z_|p=7MMR*S5)R$l zU9^3iWk80XQAP)XMCb|YZ=v{Gcyi)dX`Q-tGUqZ20!?EUB$dV?`j$Sl8kdyu-7<>C zv(4o$0BsZ3gKZ@6lKgj(`cDzb(JI{UC_Z@N)>|9?*Sf@I1DxVA% zv->ww9jzoJ{=;1h6KHu7M7vC^VdHnSwrS;05jkhzNTwvy9Co>>e&?SAU&&AIU_38% z=(0fl)oI8^?pFy!v!MIcmwEX7(K+Kx7n4T6n>=85nv=wyH;H;Gt&PlPW3^PGC-Jno zWU;U<7rAU=hnIPT$$%)*~IdZiR1cU+p=D&@ZLp}WV$ zDLh~Wo(1=9OeoT7XM&LGn}Ah*Pe}`yeAHa1MNy2540S{i9`a`F2JU+mvIP&%G4PX< zhWY`9D#(y7w(*DBsgJ=?Mo=;oXF&Cg9bRn;0k;Z*pm$(w7{9GU=+EY^`c+*Cg3|!) z?2Y>hObmSi2=AO4Crrjejb0SG2n487Evz)3iTQzjbB?g+Pn*j>)=d0}^tCoke7i}? z5swMuUOJ-~9$~DEbYzj`vY`(rr2qL{}IIf+d41bxAymoMeSf(i6&>I9X?&8MA zEsOEFuXZ+ecebC)60iyXGY+G-F9Saecm3{|0Z~d0_jY5%WY2atbtcTPlQ~%iYb`ZJ zdTIGG9QYub02Th?OXvAwc2{-=Cfmap_Rziwk?c#HmK!2xAwK5R*L~N?rky6dd39$K zvqlhB&0XV5=@>M#(ZWBIS-)fw^$E7h2!uIffD5~?($@4YThl$KGlgf#EqBWlhIezN zjfJkv=nu^jNwa>!q*oA=z!NjRBKQVMvZK@Is0Xh-_xcU6K;Jf{ZTI+idFk}jOuO@~ znVF}#gaucgWMfX`N&k{pspADzkTyK6uE^RYrFK>RVY**eTfXP(52jj3Hzp533MT&! zU73RAh_N>hJnWYbJ>sbnQANNfoJrt~Ll9Sc`$y!PEcIJx*0^%Sz`eLcfcDVEsxmNY4ndkw7} z@`aKEe9~Mo7(|p46l<7Bhgk05Q@R2u1KXmSCFam7!+%a|m5o+=_wZ%=VC(Sp&e8mF zekv#^TP|A^+Wg>7ZWE@Hge;;w7^W61is$2=n-P9oa&xP-Gk<(q7sq|V-ooFO@IU*A z6vewwgySA&9hm2I86dG+wgo-ydi_Kl2JROAxs3lgyfgqpZZhg>hJJQ!QUxbZX{f7R zIpqkSW2svmkYbcDpy>m0uux`Rp+ct+GMZ616=sPX9!z;!?HtzpfvBAMv!2duWi0wHiR}f+WO5M8>ry;sTVwhFQ zY)Tn-Omt3)$c#Ea3)MfW1~(`{zmVwz5ntyUa_l}cc7t($gaS|Mr46BWW+DLfO3Z%Yj&e@$da-|WI0UbL!_*Z-D zmyMlycqu=xiIpGpM@|sL=qK7ZWabDip`XL<&wPm2&3dd82zYxPm612mx_)rgUyqTt zWU8;LK5f9tjPf}yE)J!*ysAHb;jTB{8{LiWLi4%yk%&4O^M_b(nj_AcA6O=gl*?ka zV*|+L#&uPtSa)4IvCxHQdgbJYlfN&E6BW2{V$mjrA16^*k}MVVXF_~Jj#v=oB`8hS z)Q6fmDmfQ(MU!u`n0kwV&}p6lOm6%%$(d!H$%0!vcW9@zIPsI*0ks27U&I)KMF6AMwbIvF)_ zLMJhSGd5{-OeSiH@@buO<|nQ=*M_=<#d*7J4?*@CoH-qJ0Lq%#(49ZM_UpF4)K>r|GRFl=O7F*PrN$jR8g|O z&4Nyp>8~L_WbQ!;eXL21&en*?1$5vuXDowo$Etrp#|f2%67VyX>75$VHJFKE&Sk#1 ztcFu6wVYNRPbPEn{B$E(73T`p84dUv+e5iKas~k#v(n>E?~VfnRZK|*@mqrRAE1_# z(HuZ1rex5v0wenl$URf_FuAnHm?W=@R#@7LM3-e(>YC0KkANyljAGg$lo^9o|K;sX z67Fo29Wa%s#ZIOckAf4!3RwponTs*v@)x$ulr(n19XfQYS-{g+I3QLcZ*Cu8q$>i| z&wY@0B{0gL67v!z>ZQuyE1pUu?wo~?lEBimmgtxcZv8SnluCZ{h0+6nVBo+>@;WyP zz}!-Owd%rcIw<@3aC4n=V%W~5?OiyS{x+1*-PlP(^YlrkFRn;NomwF$1M+2dx`opv z-7!i`69KdA;IL`i zM)4Cu6IOfJ=n>U1@?&L5_mtI%q$whkPnLW*Q%d4*Y@L@>jS=Su6So+LDwn&*Mv_SB z@monI7!5BGdLOo*OALoXPA6Hyi|fz<90=C_l`898LPpW>DzVEN>hXze4bry508okPwyS-?_y z4sbFd9xci+Ea`*XQlXevn@aDXnhaY5*1HdcG-pSdIalK&k?8=i2-zzz0WUN`so5zg zhTIaN)~?rADna;;JUQ8P`ktmeWjXdwbre;_Ini?!Gx6$qOZ)^VMwbN})L)XR9npIpsQTSx# zbfTl0t5`E;M47LB2%OP4@aC6lYoDrGkpwHW`)Ye<>j0;h5$+=ZK(+35sY7>1m?a^k zbk?{(U@oIHxs<{UHw=cSk!a@-6XYPVVO z!(PB?z`Y@^ID=fcc!Ki|h6uXZ+$wkpO^H6K^BZ=6R- zjkyn&R(Z$j+uLs+935@ToE))NueMuRk6Z2itj90lzwMp<*3XB=+ZZ7+o@1)M&3^&Q zz1@;!(jWb_aj@Ci--Jq;!;>Y{*E{>Kw)WbG48TM^+1+d(9vy7ILLXT&I~_O_kH;P= zimw{ou!ab;$EXBDN>;99*foe5Vpc>3_@%{gQg$Y_q)96!+S>~3CR*8%S-CW8CF>-3 z9nYso$e2EoOrkgk`;>{hp4J?YrHZ}CqlXHCF~s|dlJ8(14%+Wj8=eGYx@fjo?*h97 zMe~f{5!=019;p+IcIr8GM=8@|yO>jYSuwMXslWmdCzqtFQFN zOYDYIHs0=H#01^r5<4?iIjXl}y+rbN!?w?&!F~Lg7#y2I@&=;x-!f=<3`u774bCY9j^zGXOAA|P?T@p~WDnePADG6ttxm_EDEWsC1C@vm7 zl9D**(}I=mJbDBbMVG^sO8Pzygn#9!3@wy`E6H-GR*~DN49DRmyqiCk)3bGOuz!He zUK>W*vBwveBP`pd? zgKfMQrumFwL2IzC{B^o+{J2)DMf>0AVe8eainLYb4G9-|=nvD=5V5U#yu<+89SZSl zEH|HsbG!5IisHm@HDE8DyM1?bvq}Y_Hn^W(?{{dOR~}l*7?z+n#so&nqpX?bu`zo3Fivi~P=svqg9_AYo2sN+qMFJskFLq#0f} z5~5QVg$JS}2oo}>V;#VyldN*?kh}hPIAY?itO3y10bFlL^5J_M0p}aCqq^#5C1P8% zu2;ICO;@?{iU4*2nqC!9+=ihHFdN8K2e=pt+<}P~3&+Q&AcB7ok$ymYs&acWo2u{e z9T`$wF==(}iwkH!b{T?@C$p~74UR=Io47M-MlOqyx`FDSPO49c&!zw$6N6)tJvmd7 z?*@lNqZ_5xij$I&&3V#U7yreSxE3i`0Tf+t(cc_hu z5M{<{ag)7Qe^wH*+z0s<9oo2x&h_;pnA%UKe3vSuYmI$ZF`S&{><|bdRFwW$xgKS9 zgu4mHA+Hme!)np&mT6Ph6S>N^{Ep1^~tr%R5}p} z)UR8u_VbOyEwpE%79z4%B!{2Y3{lEwM|yu=*&c!wdw#>Y?l=U^!1^)%4hal1tX<$O zFlRgG!j;v)-9$!B;@FqEL_Arb>j~6N$1Bz-5P!f`zl|sEN{5KOqDV`MO(ej|-!nHcPIAywrD*c}aMY!6jUoK) z4BN^nDaZx{X|4awWxo^AwQp`o4HugR46Y=LDrz|iqtoK*q6kSYsgYY zw`S43+}s7oe}zEaI9YkCRcGiS(>r`H9NicdyalFf8<`-Cn5428eu)M9E^uhJG&J@{ zon8ZIKZoCMtJnpjBHG5@d)US91zy02_94>@i*tlj@B^nQ=681^f8RJPl2MoKbzHP{ z%OlfuyGR{1*js~G?1pm20|o)uy2y1JO}y{zzOWcHi@^07NPZgRQQb#ix(236CJhQ) z2!uXFe#%uKXR*qw;s=q;qagIZvRpqLYaFUoO>{j52vapmrMjUTjky<>?}7d#j%lq| z!eBHE$7)_6b7eNzp6N0c-+KqcY?#ebR5;;;(Lr}gq{C4iDrf`wKt*}Ar5|`JZzcl$ygWg8Bpy9bd+_#p&;LLQ#9ZFYz?uU+y zRp8qU4e+6^;|d>H616f?XV;~nTcQEcqW6_~Py6`kT9ku8(vwHco{W`{-DxZ5gG2;r zOQwT*Z-lI{uuA7$CsVLa8atLGJH}xEZX-GZndd^D3UeN31tNx{H$e|2M;FDyt`l|w zcc`FuZ%_rzK||G$_B;oKL$B=)h{G_SZiiG<)W!Zq(1eBu5WPjVK31lEOU(v(O=GBJtd5QC zw}PGDwLdKo*v5G<>XUfx4;)FaJ(bK0%`UMzRHS3qH{vV|7i0dH+<-XBC(YyImB**2 zAC2Fe3m<8dJe8Y-5;u^85v%0zQLgkLY-w@oFf782L7s%fh=aaSt6!CoeJ1P?qbP_1Za~flYV=jv@MTy`L_{G0c07Ha{G3_4^9 z7G1|Zkee)yCK><(>cW0(jQmcV*#vo=mUmGSdtCjCM~@aUS`xb9X7xqHFwtL@#)lnXL$^Gue10)X3;c|MCinuJs_6;?&8 zaNGqiCam=81}8sJhR1(-$9`#fB|7)?N7J|wq~3%yi=;MT@lL~(lnz>AAU74%ONp67ZzabNe_^C9F21PGG41HNP6bun(%g&#wfH1 zNTxn%%~EyXH5YYG$gr9~QS9LEtbWkPm@-R-M1K-o$gF`}1eDi!Gm&4Tl)=Ba;n?nPz%2#rV_p0reKVdm zpVEQEGyHUie%;<^AVc@u8QJ2oIB@!o&6^jb$xHtoiDOKzUp5H`x96kEUTW>gIYc5a z(bkVo<4g0ZjZVcarZiErIg4h^nZ?d`R}T-iWZBprF#a&F`DxWi$XCE2s~YzooYc_4 zo1Js`$`WQg6e(OZs+4o#vUv~XBBLHg4elUf!F;<$ytER6MDpE|PeR&FO+qfX7PnZ9^DtA-;HT_s3{QMVdr3 z*7g!ALgJG&6PfHB`i1W9Z@%8yV)Z(l+3fC@Q=6X44z5Z9x?1JMl#i`S&fF9$n$u~n zlvX&UNU2&Uth9}>+*UQEP&qRYm9rts*$3-dntI|nW^zA~sWaAyT8Py(IPqsur%Xv< z^(2KAWl)t|$*~M&z72Gm3Z`6Di8fakN#B&LE`J+ajo$^s!&&LC@)j6o239yW^6JAZ zc+t9*Tp=s-p1I3eRW;C&jU7`xgIOo^c56KGa4Kf93^f&La#~jv+?|3Z2bh~bMO}>n zTz5!9%WqfXTm9jz*h~S6_legv{3{usL-Yd+ejfa!A2{JOWjNX6e)O{&443PQFxxV{P91|QFjg#`vaqI z6UwNZ0t!k+o}Vg+EOWX&6?NZrLMMQY&0j|bLfBPMgmlRz6QZCw#D+$uP2HGbtIo>f zkXB8rbPRIAK+p)rp`n6c#YLynMqe;$z%|)QRwz!PFQ3?-m>w}E85+I3xd5>T(FWl{ zxwyh#hF6aXiLm3qg2hz%rLO=Auu`ErhqD(?*TS5+RP6yS%sXZi8`GDoP#wGmKArtSq9 zRHi7g@p4;ZzT?UbojS%#W9WLbnI~xF3KJ2_e@018_c{7fr%s zb#d9bj+%NIIKXWG1nfB*vQ^CcXX(mk8F9|#+Jk|ghu!02v_`~kQfxLA?-@9XcO$pq zp6v$6N3*QL2%o6=3gIs4kQIs}Yp2+YsjfAEH%x53X^<3C_2HK82KI&T_4+q)HvlN` z{BTn|W*du*dOoDN%A*ILDmZ&|kfx+!aMi~KiOxVMz>xcQiJ_b7zNoJk-q`3`^!#!- zzWzRYHcCmnkIpB1@J&$YuV#HyN?p5kf7ZjKL4%VmD2s|@)KED95;*)5=0DEpCY@oW zY9gzY%HpcLrnD$tmYTI%G3(x~JWYx>Ps|r1K~?Nj^AngZ%qEz5J^ewKrQA7s2dNNf zi8xkpx!w8Z{DXLuoa)yZzx^YK2k(o7?P_8v?(QU}YPt_sF}>*~IE=}1iLZ`GN>S!r zdpLAh?Lmyxt> z`Z|#HM#czSAXE*b`Itu0n5zX>rXiYKCydWXt|J`*@4%w1pUtanJi(o=hVsl- zujU{8#Hlakv4H>XMjleUbffobyY*j1GZL&dZ^>Ix^eJe1%x+qSqeB*9d1>Jz{anuQ zI5Yz?2uvbV*>*d2qPUI}Cz0(l(;1HA7by;EXfHf_vhWejI*ARQ*!~eeeJ2hjqvqIz z8|zZk^`efK2+5vQyeNH0#t5eDfXRgwmoM<+%KLCi7B1q>a``v2NG|i1GdFP$#xjiE z=a3BTsHOBKlfzXz%y9NBpk9?pIcEH?~(>+Vc2aE)d!D?!@6Lqw*bDTUpH=d0JUZoSCJE_szwA^-OHO zGOU1YRm5a6KVwq!4APlHK1-hOLXP)y(A79~%A&6iFp|$lc+H4V}1Gcqv{p`hy7XQh(+gJ};l%dI8pKt}nL%v6i;oJStS4k=`xLSng!MpjD znjiql=2R&@RR*lm&J|HcN@Bxsgbp!;6h~l|kvtSk*?8Cm0?`hf3t+C$bL>NGsXi@+ep|`ICKQC6n+@rx zXF`kPjS^#t2}B*?qbQe9m;E1A4HizB9awc4nr30%M3)8h?St*NF-$_`M&)WjBEnQ3 znP^FL0Rz3F_B4Jv(Ne`(s~RMOt@8AwmN^?1jh7nah{l_PdSlG$$i8$0=y!2t?}tN8 zVW6aW)UN^q#bkyiZcO>9xjX6mtS!oA)BBYCk4tSR8Cy zJroAaZ7j$cAd16cS6!-L9 zlNAp3x&NM&GFU4IP-FZwNp1*}o5(t;2_0;6e~^A&N_w>!Lbj-x6NhBW}%L{ z9rRs-0E*zinDmnw+!-;Nig$XUZux zK2x`D2ZlH^V;c7;e&5(v2p;5IDIZ|`HyRAvE}Y2qLfgWO(!)pPtD@nm17F29XG~4+ z6iZvR=2WE^&{(#RBHiiJrT#p%Z;a}r&#?0)gL{|a>+5X?J4GZ z*oRqOKa$#>Cj9XStU0m{K@T_rdW}!02Mtw&A{UKDq%?wKjJ62%k(lFcs`sk`8khSP zD^-sqoa4GiH&#!?8KJ+ZDhU-woGdhbPLI$FMR3Hsj{Vlpa} zF6gYnC5B4%snkbYQ`X==^S~!xGO?4BxN&r&X=VDviYL$5U35!Hbx=8B^{#!4f!99}v0yEq>@9cx#9nm+et`vU#Er?q15zuWN#nM%>G zg-bZ&oG9LV5~z*ycw(JcBv+Hh8dcUO7QH_qeKjz?ZKL!$yi7c*%hGWfI$iF>I?HEI zOy+~vqH}FT<)QY~{_Qq~yU!v4-SS{OSkEFKl_^+jrCA8Zo^r@o-`Q**yxt>lm8lPf zIu3a!VX{y7Us}UIzt(Vi=xWvx8nq~$oO-17a!M~g|7&xh-)%0O)K2CF{tEw@L;d>l z;@9r(2tTj;5uMw9zAN7Du+qU3uU=u212pJxu<2do*3WV+<gLx*rU_D)1A(iF@JctR?Or_Jv(7BUwBtMNNRu9Xx;sZ%fWP|zBe59q;Lo_F}H z{hN}h&Kk}{CgC7XlJ3goCfU_BQI79z{BE$lA3uIBwl_WIf-Ii|zN3!>hDecjluDq0 zAXE(Duk!arh3{s+i|V;jsdgCrw5i_YG6P7+sz$HxYP8a3tLq#uGes%#oXqaS%`Df^ zth8zD+71fLVp)MY_=Nv59AIv|Yd>7LRRRlB+n?bN9yK!f?z?vnm?Oh%>HQQ4WHIsZ z0YdL)9vF=!wV0kWLNBIRlrFIW?e^Bri*_4%N8CDFqM>bSH z2Y0$P7=FmO(_|KznLAtsWg=2@isi%Bl=$wU z6XMM%@hOi4;R@dl>C+E;kCBqV&nNQd)AG0OUv9Hs#BCO}OXt?t;|-eW;)3zV&}sGgYI5FOtG^Y|Xv41Z1IU1>gPEY2<>! zI+=4>ISpOFAW&9_{SkFW!uwhcX@4`y#!8usmbGRNw`9DFT@RTJy^FDb;>)dOd}CAxiH^*W@<7SsWdBf z%Q)H3#Rh%NLB}(3c$PoGtPUbDhTBZ=mz-bYM!HXThuhq5_j1GC(;ZjhmV2l?^2{iF zHTXlr@U~{Jj3ZkHfj%6=!F_T|#1UzceA2xBECP0)65+^}cE%mI`&pX(lDP}uT7=Uy zh4nCdeOBt?Y4e&6Vaq`TD9W#jPN%~7Hz~*{2DmV_m&#pyR36ev<<@>vO47^rkTMmT zNf#;gWu7xsQid#^9KIZO6Y||d%-A1sX>Dq~XwoNUD)U!5=eU|4c}P|;<2XiQq32cN zQ4<*CxYlNd1g7Z5>jo~mdXWYn9-iX?VQ?}(=t`YA{P2f#!Plt*1nK20x+A(q&lVl@u;?(NJ>8T@)+LXJUR}-+-95(tO%n{;?L1SSF0~ZW$^;3_bcwmQDDK<3!+dGXrD8{zc%Gi}X?nguc)(?*ud1PRh%JL& zQDX66;-w+%w(~f*vne?`SzuZSt681fMt6}+V(R$udA(=RcS7dU-}z_Eg%fkmQGl9~ zN(@~@_1Be?=C?W7BMa~DVo6QS?E~+X>6Eu$>Z+Z|&6uX{R~VYUT_5&N<&Ap)Za|U0 z58~Oq323E6vl<*t_Mw=BEWZnB#YC36_0_V4}3*A3!ysV17{Ui8AM)YIU0V+Ms z3Xt;m{9w?W>KMKJ>jX_WK`;M0JP&YqUf%ZH^xWI4oDS5&naZX#A3ie$3qC{K_tft2 z^3Kd*c9ZvNob65P;HFZ`gg4>)Ckx{%%Eya;Jl!8U-s`>XxB9_r&%J&F%la*jb{PhH ze7wBGFcD*Tb%n2}aL0e#TzUVrxr7B*o)`%UORx`elyw|hHT_wMWP#HrSTRE;t47RZ zRc9_PQb#CdL@BD8#Oc*kB25)Cly9&Grj zgJfv4@Ti!_K>q&pJz^fuQ0RxVD&7z*Io;ogCcuJhi0N>y95HY&E=QQ49PatL#wx#Z zBr+A&f`pTq{01HXB+f+KImUxOu)Q0FP{8z>43;pi4qO;m31^xnNk*He6dXC`(hkLc zP|~r_fofysY^4IEMz8`x(W0(&`~bal`!^t?ZX+C56)p)x(IRPA=i7ADXz_RxnE0hX zzPMD4qG1=)1H-TE-)(EGFH%IfZ1xSsrDMOpXmjX4L-pq( zuwNO8HG*uC^cA&`&Y--pV9&G`?D^i|$R9Rdzs2VQ==0Kly?N#R^_3sI`@9yn&(oM5 zH2t>GYVRJtY#(eLzTP>SKc362<&--o6<)c;Sp9{nF}SGP=VO;%z5_e>@BF+r}?j8%JVm_tnwsKW%SrZecq4=bKxvIE}n|-P+%M zwY{@-(0;Yu%6`#m?`OYw0sn39?6-c7*C>SH?pq0#7^d+jN`C+G9_WC8BCl1p@yA?U*B$%81Hrq(71R5>#*$Xf;W$*-;vEJC5KhB<((|Y9?%1C`6m%@Yc`e=Ix zcK_Ck4IqSvr?sxvhc-9OVWXF1-|k=}cn=fw5cV#G%|w8=@D4{!wuA0!B@Xx)gVROA z7JHw>+f5aq3i7|qc%zvFn4~sm6>Uc;1}YU8q)hcx9g&Pdo|dp_-NBH79|-^wcWWEj zVu3`qPM<0H${i^)9@_J|4kgM$0fU?wL0H2e$ngjxZuvt33D&y-I+-I z?ZJJwd|DUB_<)!8{m=j4bZ+gxsKB^{y;h-oQ9a)m^Y~j$e1HzEi={R3 zsiI0^bzCtV)KYbK`ZnAjFMPl9p)wqw_uUTOYcDce83yiq8-(Es$f^d8eSJ?>X7sjS?4-MGi7naOZxu0=$FPvcEiLm7pdwof%gq+bhP+TPJfvjG& z9(a~CKTGwA*G2GB;Rg5s)yl zD@PXH9GBxc@S`105_&EyYVH>@iCF_Xm$2 zqc}^I^G&|e$v%e|q1@QPC}u-WGT$9U(aPx2zdkpF-;hAN-dN{vm-aF$pq`;EAkmyP zmph{gE4MLCGtnHe_{OOA0Y=^FU8QygPC%##eg|hz-KV~^=*^<&^WMe#1m^{I4f}IA zLfv}8?gx(Dy@`LXzQzwoRO-9TgM=J#5D5z^QbDE#B*vaiFJ^%GT-jSS7A>BMa+7%% zTXP?9IX=OUPZoV_7&WJXIf}@<2(>hdyQQ zheDD$pyQl`CxM#BKC(v~WCHc#M4J-09CY5y$2c8xrgOQW8=xZPCSyGZs5a<-CfU`?*21#>Z zj6CE}OZMbU5{)|%h};EDGsSt!n!!HfAoJEVvv_dU|b-U)25V@)Js= z29U8U(bS4G`NC7jH^A*tiS$B(B7^w4ZuK2t;m1SVU!20mZlZi>H-W9MP|sDUBM=!x zl4%Z}tO^ojSCOOwFFuf)6%YR0GEXH+$$>qvD!8lAR1Y=dRyB4iO17`|4~|d^2G?Q` zz$GA4o$!J2WcXPqeE?mwbSMOu7=KS}c;z@{olfQS)wdPp!F?)Z8e|TL1A)YWbBR|| zS2X*!wD2QW(R%cV0T^teb8xbmp}Iu22GeLtMUgwIqg+#!CZbV*|Fte2J+kly+B`Zq z!imn`r6jc#Zj{^-`W5a3P9ulood8Z~A`?nJ$ABfQD5~bjjJ2p{wu5fiz_s)PO1~S9 z`lzRT5&>O=@;leVX|+cz_@Pw}w_^*s8;OS-#7U#I#O>YS{USdd;i)9q4hSNwFZn+- z)wYJuTLE;`R!uczh3mREtk6Kw5UOcL%$_CYpgQ^w`&3v;GrnMDRAXr#P_&$sq#MB|mKPhY~m|f%G>04jAf`*C>d)jNz*w_Wt7pTQeij`%h#+J`GG%rqe&2F$aywn{UhdM|0(tA1 zns#juq%tH@vvS3iVmHFt-Nc0kQ$sH`Q>mdVi$hw4u8j__4)$NRUwr#*!oC219#SC7 zMoSloShG5dFgB`YrGAd%Hk`q5bR#&@wlXX6u(X&COF9bdhy>PAIdo}b;=3_OL06tm zi$^NngdIS21KGgJa2#I3yZK{j{MQx}#6$sjVBpEU z<-bAZdh7Z6P>YN@@t6($VY&;^r0WJr#bomD7qN|1>D`$fw#5s%TCnhX z)4~3Ndcv`b#sHm_khM9XV^o1EKe%;5xGEiQq%`-iha>x9g&@tY0(X?qSH`;qWzM8r zQcZ4CZ}fayEf`rp^v2V02=Bx{g1$GtxMX+9btOl(+cFk=iS%O$h&nO&% z$6-5m#uGE1nY{(E8vqLcKT1_yO^ND4k(9)4iq!C+F z?oo5e$99zr+djLt!Nw|As%VyR%q?`^1n8+1Bbi39qgSf6}f0Zi20I^4j_h?@_9*mfK!XabC=aA@J$4kfS z)PAofh*~iKjg+6*!BPS~dQ`L{i6A8;@Y5TZ6}2L)!QvI_5o8Lj&QSr+ z5k*#@e!aHV{Is#Rfwn5;Lv18P24~z7$U)X^jAKb;9WzCgT6?^)_VdkckZU@Wa2q#& zWh@t`4%lMWmNbJ)8m}Ey3jQ|Kg(VUd%V#wpYbgnrr)rhSk<<$^&UVmU&CrW1= zge|97^_)<%tq+|cM^8X)SsNG3Jp1cEdag2VKBwrgRxLbFiMEz&mUMDX@{?2L zj7HoTfrh98zAGx=+lKL(xX{4yFsrfU@e6fG?I9bToTbG2(cA&dN~zmv{Pgu$a*jGc zXPBUg8FQr6drvgiiaJ!qX#lU}9dwbeT}Gl4n$%A?A-Vlj%Cf8uQK_TKL~BuCHp$oD z32V`BtvRU2z>{_!vketfrjs72WP;VCIqM}97;Em?H?6){`$lLl)@D#%tR;09YYElG znya~3o1(Z_n@Ml6b^~gQHLuoUEx*#@+B%DGw!&grw6GDzEAy3GX+dxmf%5D=yZ)*IRtAw@B(O)@sF*pM2<3TToH7 zl75AYT3^PU_Qr*GRBC*$%J^QD@x3bJdsT)~R(P4rcT>6XU3Gx1Gsy?H%A_KMUG0Ubu}!uQA<-@^AsU0=XQ%#p9)N;*?Y}99^l?tLN5ET}QD{ zm?CyNW4FE2+}+>b6y}|=`(*4rlXsr1eJ97ZlGs$xcS7+YkUT&HfC-h_OHwuKD+bVJqj3kOJ^E?*}C~ zm0^u18?eW}p+B4Z8&87bkD$|oVl`M=T&xBpyl<=vpMJL;gJ*FDKE?0%0na|bo51c` ztq78S8y4Hl`#>hUw^hI<@QFUdw3>Y@I{XyQyW;071zBF7qOAzXI-d$)m$3ZdvyM9S#rxt&HaW&dwGb27gu!V3V#YwFHa#uW9=x z=alzhT3+EH^fi3IQ>c2eTCAN0wVh?9KLEgc2cPckmsNqv5&U;}gv^Qe=pA(9g&DO{ zXdE;fTbqqN>UW}tj=X!_%e*vLxz96f(-{iSNbIf&%eBb03rA;}&ecl3UhS^gokDJX z1AW>}UQwd)escrk?51{0ctG(T#UGk(emRgy)WcAYL1R4XBYUF2_-FmTsJ@PICSV40 z+!tSkoh}78u}kzZI!0$mY0$Kbd?^l4Zb)us2EpV;ruxJ$)n1l*{m{HNcggsSw0`(u zm5^19u`2^NNNx)-^*JHC)?1^*Kz`xCuDgA9%^*#V3uD6t(hD|rH-LMOT4$OYnZgef zEy6%X!>}v2^Hwz++wFd@21Jd}->DY0PhnuxSg4GNC}xbPd*aiMm;a<>0hyto*Bp10 zr=&e4c0T>t`oWVMo)nl|YADe5t;?^c~v3k4vlWb zjHGzJOKw%HLt|ses_LXEySK5P_B~lUi&`(`PXA=w?OxWPqb*7NjADn(y{d?-LwJjc zJ_-~N^#sV@Itww<30_o%CN>espihU<35buV)*$)i1ezK5+Fp7BZbD01I*6(v7Y2~Gg%7GKmC1I^+8HVWLV$bZJ zv#mGX76rO&MLk@D=bh0=;!06I77~idbrEx&-U(=2^qPT+7JL}I z&(Z0Loy7H$!Nnn!LpY3dBf4Ewwm2Z!X>cYm)lh|L0YIuUBa62f5)%s*_)&=GmWe-i z3f9zd$Wc%xHb(!=Q#w{-Ghw`O0XLvx6Jz~YA?^S&0EP{?-^Zk^L*gW+trg%p}*a0TZosLdg<=nwr$k&MBdhp$%`<#P)d*a*Inn{u!)j)x1c2d8%zjyt^t8vIz+ z%;<8^Y0<(bo`+ZPk|_rnCvDwyNYOQ2?y3Wom@$zfV6x9C9E9dH*zaMa2vdUsjha9u z7{p5_!m-17(erVu&LL;cty~iDEI~_vHt+)j*^ut~khl*XBp+KtN1n$E;oQPP3Fu%I zw2;AABXHbNJ%d&OlbX>NQvtiGQ}_-lAr=>DKPUFY>CWQ_gNB@Q{1c2&NYa+M{F}2T zN>Do;0Ti5P2ChAkUPP}4L$}KN!P1L@a0oxZIlT@YeqdIoUBkSbF!nU&X5qsgpbA-) zESU=T7}_VCYfF9#d$ujLz*oIz=QwN0W^RAIiPM&VwIo0mQTHBiY;83kZZ!4}pc@m^ zloa3;`4&egl|U`Ht4FZ-V9kEo9}hujhQyBQF6XF=-A9LS^-keXcpZ0|1Orv%WwziQpPyf@ z7Q=<(g;uekZ@1s*cX#g0FI-iv2R~exzpC0Lekd1?__=sh4V3B8YS5|z+^TwlMgSOB zuf%h{Tn?6SDFl@YEcIUo%cht@;*N%URirW>mV!#~z_3K(kys5Xna-g~DLHfXTak8I z^MeX>Ji|0Mw>P1b0Z}p)N;suv9G2qyt3{}WswaHc#6(lQHdFni-(NirhxbsGNY`b@ z;jium5^)fO_xD$y&mArw6)i$QDOB!2Ehq~VU_xckA=#*p8i_KKXp#h1N>(QN04FO4 z~#8y0(ttP=-NcZ*6mvqlIwvjAvhtV4Vl0=Sz!AB@T7esGzkO78D~x z4lgA;$@3mtRE#*T!eAJUNTVzXJn-T{B@XscBP}LX+17r~Di0I|#j;97NJAVIgJCoDH zb7ABtnz@{uZ;yJTn9eN7K81_(d{SzH6f;jXZlZ~4Ho_KWuox>^*1CT`c#hRKb{=9r zwBlUrVCR8IS0vwH9M*j^Z_pyIdu$1 z!$l92Y7l}L-+20TV|zW2pgyoQjJqS+#~l4tZh8m*xm;@ z-A1rnDZD8to4PkkS2|YG0!&W3WRrnn6vZXnN#@=x18*1mulXRzEd7BhMlU+hcnX( z>Il@ptpqa+Csi~*nS<*c+C=4yfp!bQJ~fWSZkf+#us@}TtVq=qF;;YskeE()GQqph z6T^q#H}Oslhk$QsRr=VM(Eyc&z1G>V-|PGe6YAly)5cMZ$sNFT^zR9xlao#h6T@9r zO=hT|4F|YW%0=5Ji+I$bYG%Mu#95saw8v<;pwiYFy&}l2;<=SQ&%W+8G|R$3&G>+@ zgpKW_^E!yfC-_IGNw0&ayBiNTpAl*I4j$si{>cdrG~NzUT>n%78Z@#hVb1-Bn#d`a?8bFPn8bKWB2`|0R z@8Gas6=$vo!avTwD{HRw2OuEAG8h%yuMRubPw~?#PUIi1&R?b9hQm{QduM*tZlc>? z?#sPE!92)ZK=p3FVk(**E&UMQT-E2^u<65{O&vCT!n zdS`c?o;XO%UjZH#Jdi@@HXnY&fOlFobjm?PSnI6~k)CLXaIl&?oIiqdl}#~Jkt^rZ zz5QJ{#Lx=CX$vCqa3mH4!P(^i#Bym0YuOFKcZ2wyB^nZuV2E%;91=%G#ncX@;wt(SaD8@7GD&s7>m!m zn=d)*5(rCwl)WhwB$RP>DbG_{_pD8PcWG==zg1c2_!T=2XYQe_9tzO^g>G-GiyFF) zQFD;)c(ltKS&*TuaT@jT9=LvfH|De=zEJRVy)=^D{JXwC+TCwTpM?U{b^rb;9C}%E z=(>_{QrnI-F;IF@x+VItXG#3SU*OdF;SY=Q^*Q`t6VK=1*$a!Y-*7vLHq6dI=kOLZ zGm2LV=a+nc(eItohF8KH)#v5f;o&bmGXgu3-UJy{0mu#L*JGI$PY6Z(VpxmL?9hb9Bvh9==91Xsr9f-qtx#F|XK! z=I>f64XOGn9P(KYFBbXHXN|3c4YeiX1B!QysuN|@3q^JneYuYGI;}k|T=@i(Zw{V- zCjQaLrm@vAjPC@Gqb_E5G)GR{gV>fr=gjb064d5v#zFzU6v!9>gr&jdkg_3{*DAsC z;^N&Z{{E1D|CoM%96TIGQLxuP8DR=?I2@0AZ8~UIgUw!xkL{li(c+?qy3I#;Liwy7 ze1_TT!XCl6OU;q72FY*u7lFnC^d38xXS5TXc3zRu&A8X?oOe*0IzZp_I2N1i7W4x5 z$^{@syMwFd7$rcAp-+nh9^>Es80EwBe!FwhVM_zp2SYI?3u6`xV10F3gdyx+aWs5| z)(phNVMM#ZM?rTawkseU6jZM|WXpgyFzWIOI?B0w(DzOJ=JyiSjD+Cpk&!2wBv(ywL|v` zRx_~*{Sv-n3y6?%Sk;qsG@TZ6VR@MzMoC05w|rC~owqg^wu;J3F(s>7NSR&=TNmr} z^5FqT-@t4eLcai`e`Wa41JNn$c76p= zXtGv01=V!Y8i-hj^Hv4cnmC+WY?4*Xk!6x@?B?}bW{WE9i&KpTuHc!(W*ue@+blzc zHVziak)iN~RZU{{Q0M}-eA|+!3~IQ-IPSx74T=C1+NKObtf&ZkmujY;5o_^qs#cf$ z)UiIB%L{LY#lN||;j%C}ya7+VXQ?+RVGSMqj(LM5D?i~2!W1~EUuTp`nrg^-MCO8q z8OMcd&LWx(iH#yPad1ej#64*KftS?q35{FGf(TFTd+2RLVPW_Z4^R(Lk3(`?42Rn~ z>V{4#teWjp3L`Z>7q~@$G$5cj;YbHlwFW*WU{DAS+uc6MdiY7a`}qM!g*d8A2XN8p zeXv|>ce@r0dIpfX78ui0(rX1|bR1zsx{DC)V%dobh0*>PZ8keYy3p(oQ00uOgMmmv zq8gGcub3!>)MrAjb4utcb51$tA+&nHcO|dM!>fv9>~S0g0rrBUB9s8RVempc(QE1< zA~}F{fP3wQiWS5W8wfj<*VwP^{v;dA6#CLK8i^cw<4WUAond~WaV(@dmxmjnIS^Si9Vj%= zYfeml*0*+^ZqPU+S#cUNSqH9fHXd#7>_O9gjF}gWBCI^OxMGr(!uBYFr_O8Iq9A1b z#I)nABbWVg0gW)R+zW21q&6fn4G~OAvAD13Yq7dGfLzm-&_f1oPN+GvJwXbX{+o7U zz@harJdITBCE}Kvp;2WRylyG3PaZRC11O|70P>VHQHv;X5uE8;m#0t$Q>x-OOtp2P zz6>rtSmw{I=(N=${fFzj)7ZoFsrJ}OzFyzj!oO9-9>tiIV`-JKV$HnzIu@;N z?Q37R7Rek-U}wKCA40{(!PfLcD!lF}8x!hUt;UN|#EF1IPLheg3c5xVP?8P?BD<3o zfP@lC4ntjuS=Hrd6r%l#dmk$%<`sDt~C#z3?{%G%$ zl?R_do!f{0FmeGFl>V(AWukgWU@EHd!Rp+br;W9rHy&-&r1F)hdy!)@Ca8XuD<|wz zA`Tr!@REz7UO)MgbH4EfBns|bHQu=#}*;7tvf3o?70t$%>BqNb&O&FlO%pD9wtBtj)^Tj~m>w5Rs-JlCg0)MY7LJiDKXWT`Wnu z8{5kqz|-b})W?JV@_= zNd|M>ebB+|t5eYhgYl@4=Ge1o=^Q$!jVV7N{G;)8^x3~5eN7rl?}VAW*?Y>W9berP zmJgrotZ!uQ@t$2BEe7z;F>5PVSCb{)#QB1<#20DFjT_s(=B|wnQR!`4Ux2d08+TZI zR6ZO`I`XM5kqAB-QZgCbDd>h3pe1 zB@l2_%w>UkOSc8OD0dS}D-K{)cJB~W9es)LIR(kN9FRAQ>VZ00xO`TTZwhl&L!7*J z&dE*vch)|px#GXqfYLN;C$kBS<=1gzVP^f;d|{z!A#c88*0-#2=?$aS zco=tHA#rZs4h}P+Ic2j(+=87O@JvwS@$q2T#~D2htW{Fk0J#PCzj&IHOiE0Fogk}K z1-5mV8m!UMh1C!WI{zNZrP#G>e@Qd9I9|0Y)4T$!sIQZ4w;HU zZ!sF;B?fteejw89%?7T_SpL7PetWJB=NY zK&YV&cVY9qqhp2~Y2#;kx{SZjn8tdesx5O3{)bTN}dzloCLcsCmr0xY)X4Xf8c*wYa9|z*1@$+Jvb~;pD(l zAR#JuL=njq@!507F&JZ^vx<>cMRhQvp*s}bjksaU?w7bsAEc(vh+KQlIRn86#r8pW z90xCSd!-kQLy1;pePBXX#6UTXHeF& zij0zh(Wp0Mj*Kqc*oxxO?CgOIegcc~awQK(0uftrB-n;V;mZim5Q=tIuh5MarzcZ5 zIr$~1maB2ZHBYwkmQDMT>;v$vM_(&w28h3xg$>BU@1Gwd5ZV{mNm%(BY(K<&dF;}Q z^PfNE+cENPCn5G6gP_PRt!&$oucJLM#koQZC2s<}iulxtpS52zTg%hVE%@pXv;4gW z63#{l{6%WB+jd0l0hF^amds?sa{+ly{a3Z8Z&X4^3<1C%-_FcPF)=P}m=*j+jUY0u z;6d;K*=;Vl97m_$Zf=b*g|8W5kptCJJ?z3Qi7}D==V8JVW7K4iYB3fSkBcBxirueC z_B?WUUy=)E>^zmqAs(RxMVXIB8cz!mnx@VRX}hBSQ!}@7BC7#-Z0DB_GySZw%O5Om z3SSPkH~#|vqRR_?epgo_cTR7fIBZCVZn=z%kG;kW^|&hP1bS8LB>;dho}1xvC$wV% zKWSIQZ31~lfE}n(Y=uDeCppPn3b|<|6wffz55&*tb=e`mVjE;bJhwc@)3UZChY+)q z8GBx7+3Q%{5>|Ki~MG%AT>)1yz>-3Q&q)mgkl$ zs_k^UFy)S4MwfQ;dk3G+fJQ#7q!}M_D{~((erdX#L?c+07HWr#Ti)w94=w~!PY>oo zAK;+b)5XHdnjh+EML7c|s(8v%VRs!*?wC-Wyx;bB@dLU8K5T65W$Pzr`bjSv4_V6Y z0Hmfcj}~${nDV00oBJp|e4Xwn8cH`)J#_dL6XD&r+st7nRBUMi>nv#i|(89c0ksydP!s(qtZz6&DrCp53LOJ8cXC^s$v zVupisi1aj|=|-m?I~PrNB%+z9MN~MK-uV0&KHk24JGX=TjPC4vt^Q~f{0y&tP{r5_ zd!uiQ#^VtMxuHY}cw#p+#{7ClBk}=88np)?+3x{HqW}pFBb|$vVL2 zl9qb_vkLBRe731dF4YkQ*D_>lUqBghOVmQCz)$gn!H*eS$>`gwfm4wW zp`X+FRuVm6??e-a6A+Iqn3n9PcESt=MKuIqDth+*Bc-jD`Kz=@F^pM!a!KB9Qi4x8 z9ll)2(CJMJ+;CHKy#Cui$z>AXO$qI#HBpfn2bUXmGPEg^hMu?8M$Nl~Y&;xm> zLwSdICJ=Epd*TflkL)ROMyJ~Ts}3G7MD6mb6KdsuP{vrpaw~!x2J2HOvkxk7hMdcU zQ!JArMz0g@GN0X1)u@&qJOel&Z}x{s>c-Q}DpC+{MF@cAj@UAMri^wMoSX>39Y;t| zHRPBPpg*R>CrE9f26;Ficks5P(|U<_d!rJnj3P-T)NSh?;+UJyj8AjJN%xK|^~b}2kvzX^x6wfi0mfh~1|x{1 z{k|8JJ0p|9DT)XbY-_zsO0lE~F9uDjBxS88r)fi4rC=N3k+@zVTJH7n{3(+`qK|dZ zTUHG@d5w1{Uxtc_8e_l-Oq9~S2rpwIWve^JxfGt@~X9M2S#^s=L8Tx@2q zkP6jzGA^W~zQEYV90ZK04RnCIs1d}t%Ok$0m43D{T@5#er=6%3a#okVrBIXzYP6QB zyl#Qo$3RLz^g=id&1L2cr(ux8!JRj2HAr%9z z;D{JrFdq2O*Q%xC2&JiDss7_C&J&&l0}$Ls3_~^XGKvO#bk}!CDTYW(%UPyI z{rXoFiRRP2ovn@ijqFe~ZjL5(n<;rKRlJSchu%9+x0EPjlNp~Ro!jjM3_Ay%TM;*8 zT>#Uwd=-1XT zzjP*EcA3e&#MIKXL^&t5vU>LRG+8zqGP=fYCMRF|ea5uOtZluVLLV5DWYX-+u4Pu3 zOgZ>WR!L7M&JI(`!})OeKWRKd3#b(5Gw(83CSVLlu?(ImFSD!eZfxx|)|;3UHif^h zOd8Vq##78zE?(hJHufLytfxSE3r(BbiJa?`2QF25@~A!9+WEABAD?_m_Bd>ykvV*x z;(4)uYJ3Q$VE)uQ$jRx+$>Aq2c~fixyq&#$7#3u|>l@jVH&HAB&)!u%TX*Vpc6G|* zlvSCMMWuPFm4w>E-tD)(%APdbX_o9Q<$;#Y-JOQzDU*bxR~=J7*{kI133Gg7|G*9@+w>Z0;s>aCOx0XAQMG1g&9s(lqt{1YY&_9n%5@Tl&?^R zOo6Gy*PcDgkSo;N36&rI_{S3}TVfhc&z|MO%9NWts?#ycgp_O(1~M0JR=LTOW-4ykkdke}JjsQdRc`W}oQhjE zq-2}B`6k+Ko|%>b%U>iLFE8&&zxN}8DG5k)g>qgroC0DVno|5OldARuOa1$iW7;`Y z7yJ$yUZ_es-fL)hRnSAD)cHg~2L1IAxBqb{0NDtH_^}gK>DxJ!ru8WaXRUX z5Vhk3V;KE%+`(|72zt3zm4*wGpQAPlX>qReYS4_OUe@ivjd;1Uv{-lTCUGG= zY`{)iK3wOtOJu)4w^(Jh;S*A_Xsp@rp?*|RP7vfABi+IUIP0vyX`ysy-Wj13YDVv? z`fh3A!o=W?`h6hH0co<0EX&7dY}}w}0AcQHC(apsLd^^tkY4&^hgKMp|ga zTo$=bG@kA&-vU}O=moKMu)Djly`LKX>DSlDhj2);=8o?IwM|dDw%Rbtb~H=Im*z71-q)9#)j(B}dt=~P$`q$+l&Yq3y&7ox;3JkDFAX#HwSnLBIpEVjv+&_(&@^=rUDv^N8N5kEoU)14)KN+$BvTHpbzjX z%8J~M(2|U+Q5++Vhkd>=XQ#nCl8415M}NrC33_HNDAcUm;1&sbSP(@hzQ~2$z0(be z!Au!e9I(#G310(ZJ}Dw4=WWuxpuw{$(+a~2M{4>w;!L9;D9ZcQ((}2pX}7XaQW;|m z3`!iM*ww=P^KyOud8PP5F2?!tK9Uwhz?plpxwl8o2Qf7$UssFI=ibnb*%cspp6p>! zZ8v67T8v(Slr+osY}I_Fs)m*9Phf$M#yt?mKzwp~NwR#ePdC3vJ(%7a1PUjQ`xnGn zIb#IQJm&O@_X4Z$c3@Vlttml`%ADYRH<}1x0F65~R!ArweZyF>6MUx*Ju1?aE;>Ue z*WKJS%_`cNsR4vim1|!%7f?3GiCrs1O!TD0DJvTQUYw)Hs$PC#ZlQ`Imt!9dG{q0? z{y;Bq(`V+#mL_VS28JP}LKaVxrxshZK|u`<7Q14hAF2%)J&<4%9S?%Fby{VxTY>O^ zenzDF+yF_je7IcyaFNBWJDHt#`%|zc{)?7d96h!#+Aj)P3|qsTe|SmV*vc(~X1ghzw{1zanm9#R z?Mcu9nOiWmmT6`I$3;^cb#6t|X83C#R?%Cn(|Z+mJ8jd_N`R+Rwlt=SYzbY>TTw+B z+B^7kZ=WKaQ_JbcVqvY$9Q2~Oy|b^5$W}f7dkX-{3d=fSq|{yIk5p{6bf;91Op)p} zKC(&_PC5l6VXy5xc>?Qv56N0C9IAjh6f5D4K)9k{3GQ=(WhJi!h)?z&H8*y5cR*Y} zv<4I^EEUN#lVxFX7ONKyc*mDBJX!dVnucx3Ldjz&erxs=0Vab!izgkw?hO|2Pg09_ z`THgO6S1w7{W1(rq6-wbG4VC*GBFt%UJz4$)rT41jo26Yg}TdHTPr~s#7hjva8m~H zW>^i}Y?Ps#jH)b@4MhSnnmXx3-eLxb&4%$y zRnv)$?2z$ipd2}iYiq?S{C@Tf|2$gzS&>ew#hp)owpJ7?J`A$L<2#C4XT8oZF{=s^ zb*yrQ%Koj>-M4^(k(Qo#(tnQW)zK2oD1HR#AHaLLn_t><_- zr>VBKR=Has*Hn-Qd4%Rok1@Kyb zf46}aP!#;$+44}t4KQNOpw(I}&cXEH^MjgOP4v!OwOz5P*0X0-yB18R9JO$gRZT6L zbLm>8(^l()0DhH{^$(t|*{#CYJgvecw`<{?_tf&WYX9i^xF7jiWk-g!#@gczzBw-+ zT5B;LU3SUgV2s1prM_sEE#ikLA5rk98*<%||cx(?gtWEX=4|nGX1}mFQ zmX;)`oYdi844+w%0(E0%n<^z9C6W>+TXc~e4+si?z?FO4KOM(%CqgUfLM?d9gc=** zjeAIed^oibfuZm#xZ=rh8TB7x;!eO|c|CqwJ9tL8!KiTGh^eMg2{8%7IU8D&MQuBH zv0g%t45b8kQF{Upn3ca!ae>%zU62XZOBh}7{3X%_WqWL}j;aZKk1|3a6y^8{L_Y<- zZ~q=RL`@+9q-b2NX~g;+ zN8_W;(bW49nHJMwvmK2vt3{_5qQ7g4)Nj^2#^6=4B#2TYNH9osvp*bvbhi`-FkXnl z=9<}LVE`zwAO{O@kV8{>fG;`hrXs%I1u5CsE*lXO!LxBV8t;Q@~4XmJ++c z89Y?_Q<50ZQFUtfPwQOxVoy9o?k|Zu)wpU^-Fu=F zl7d1cI*wR>N3#TENnoL!5j@Ac^$70}q_}1eujf?$F1=`)c#Db~8*+-*mr<-D&SC(A zPH(It%F;>w_A!jmOBLW&#hul`dwWqOpb~bNS+i2;h`_V)MXe=KA#44T&IcHyydY}* zVmpk_&f`%Vn0QfOAaTiIEEtW4JqiY6^IcfH`*iLNNTD0g_G|qsQyt(TuUJjYwqSHV z@V?rIce?T%sk97V7KtyY!T?ti4qJDSb4Sq55YOxOQbvH>s#9U z=@i$A<8h>7O2%dtlc*XFU&cWhRpY!kYM%qW`@;%Mb-wE1E|1zc41B@|*$6{#okkiI zt%Dd<_c{S7NxE$5(N^J>MM6S#i>moKat}VF)-dZDcJIgaMOqX;t}mJFuA?&yue72o z23T|j#8tBssV=T?yCy+sP^vvC-NS1V9gSNofZ7@!T_kkEQ{)6B<9B^*&io0~wqzP8;1)}8SpFC2X z;xW3ChwaiI+RIp2uj7CY&x6|V#1-77_1w}V0OmNUS}zR8J{3GubHO|ZNPyyM;mM{9 zLncEd)?@=>d3L7vU~B3z+fygcVjdK5Ps5|O#8@?UORNw{s=iRgrlmnG&65|W$hk_= zB#-bRfANrV6z~O16xw$$0uG%-$YA;2pgLEF+t8=yV zyhL{riD^xxa4_;C;Vdz?mCOqkUopN_P+>S=<#WDfx$v~;r4UF2e$92knE#IA<8S{R zg6BiwQ;U1XV1ov^S(KaAM4<*qOB&(b9xrrDNwSwER@T1?h-DT#LXU zS@E=NUA8k2m>ydZh7Eu%A5J0RNkno09XBMoHpOrR;H=Fd6A~>jM}!hx1E@oh+}@!f z`W~N*=AW15D+Ge(>1*KScA+Al9-v4d?_C)5R!$ZaIY`tHa25+JZ39`gJb8$RCrS*C zdOUL!X4iZ^YEZv9metAX3po~^pA>^H15%AdK`CBXsn5?XER&%=W=?(z#QQSPOIXnuXG2ZTU52{ogNz$Np;c_45I#^i?R>(2UQ05 zDDXoMhBl-#P1j0JSpdXKF66-;rkdDK` zlqL-4!#lw+m1`indDc{8YR zMpt)-_4(?v>Y$`24dL|6FAs_k2ipwBTv>h5*h3Q*yf7we~_lXuD25KegS>xJQ;uFR*tdCIy4l%0ko?@*@zj78aoQ z_qqR!zm-v$3ek;$(-R9l2dMRYGGwcuA3F6l1)H9FAO>l1uIXRRv$Mku@>s^!aQ(VJjiJ2Au8-~N?JR#Xsc=QS50VL9kzwJg4ToG3FgX7 z+={4`J424}!3mD!`jR-z1#V#{Rl@-+YEoAA`SeA$fVvU95=C`? zYcvMV4cvPiNyCZ>sKCB;twQ9r+Y1y;R2m{6&73{bb9!jdAW$`lrh(>7u_T)4;J#XE z&kMIL7X4h~x=_*+ue5Ml((e!O#Q{BgVQDk(&=Ls9M~4=ami;Ljjm`vRuDoRZF3e#E z)6)++PgY^p>IOlb${xuI2ibD3`Q+zlzxEUkSq30{Ix^Zq-iXrZ zAcdf<_@qBqoake+_#!8V>kByU`ABr`N^_~KWhg#Qtw#6#65dJ4b&&4AO?pTwmI~V zj^yRu3SF{R5l0EJO&EtwmhI9;PIRA3D_-5+^5NpOdk>3;i6X3oFQ<&924X6&x{%EI z$2klYk5mM@^}f!R#un~Y46y8M61mS9A63Pa5q^JM&2#DiC<%YX=}9Pl%g-LlK5FTM zg1feuDZ|?N_D`NW1}395*tSK!aqgS{@7|Z8?lt3KlC>a~F7wc38mx#7%ap zL_bAtM$Ff>qnf&2yg*Jj2xF1+VVzUrD+yXh#?B~)iQ}HiF_d;!qtk-A-KN`bDoeP> z`u+r%670Vt_MmLwJ(B?LMXyKZWFiqMEgvN`x}aBdOUOu)mxQ7hs#!zj>|)IHTNF{B zLRzE6HOcx4C_A}O=u5H?81@I6=8QadC&4J4j=OfWhj8W<8*NI0q_C$*baZdii2*PW z9pKoakaaai@2NWB(u-p52M#+Lk&p}IfK0-AO)6YI`~`qJY}Eep=zWY!qWLM{A{vvk5d_RbVGc zNfprvOPq8h0HARUunZeO=u$o-{JxI)dB?GJsB+DElTKP5@b}2%u1ND9`8C>y_KM=B zK__97!{EpT{}%*pb>fFfL+8iV@B|A?4P8(yE;-Q8WA+inBX??7B$m(F+iO+zE zjV>^jD6HKY8<(-I)rEW`k3sRu=4j%}>FDACDY@(vZM}YtO{|rXx;4v$u~KyBrPN!? zahB3sVE#7;_+D9836^e865$k^DMCx{+2#$AH&Ovw8 z*z9xURas9l>ITsK3$~i{GG@HN0T^PmU?izHWtC_faGPO}@1 z(3>_nbh2eOKKBnBV}#2VxIpF>ow`#?OmD!mHb$pR#jgk~ETZxuKdz*#X%9Uh2I1>8 z0DM@{DOUmsa-S&l>c^7w#JBFuJ*QfIQ1P?PbzoHwH@5aHLaeQMEsIkI<7mz9FR9`{ zOo6C=bT9%{xZ-cixFcnvj`6SZ;r{GdUgR@iW?+vowlbQVjz3zO=j;F$&Dn!YsQxZc zaZew(MHA;lE{I9<=}1=k{sL9&%u%W+^-u(X@t`f1j_AOAKB%3^C5nB#hJz~wk`|j+ zinMLXW6Bf~+mr?hV#d-jt+y4+z-ClX95j=oy?{?uB#7xuUn2My3U}=D4MsG;cu0J8 zi<%bZn9avKJ3kM~Br=P;mr|z!fNmcSEgaw6C5}=ZVHX(pxGFbIcqUTV0|*KPZXwS` z@6OF%239E4prYh_Kpx;rB_w4#dQEn=j80S9t{0l@a~>Z6qkX+!zS&M8Y%Zcg9_U+Rx5^MO)RIyQgiaS{=B2A@kj4&D!zURalUq@QH9 zCt3>#?fOIAa4~q0P^_vKN0k=~G9M3*lI>)~zWR>EF!Aj7K3$7BC(KFa+9ul8Iw$o6 z9FGx8!am-A#o`! z*PC669)=yPiR2}!msn>Dh!sMi4g%5cj}opI!IQn(`p%xRee?uTvZX7S4q}d0AHkMk z9d8Tl=8$@<&(LjpXWQx6_D!pG%cjkF(ZqxA@Z1aB)n8b(v}Z06Pt+3V^jIQQ2}UOf zQDewARdM~cz3I*nCTaP*#b{LKA7MJS-(cCR-}Mav>m(Bc;7&WoA(6w@VXal$y0-w> zi@`oX3GUwyN+1!HFn|NhfX-;8aQhS5acJ+UKYhHj{l!Y4-WH&20h9e1r!(@mq6jg3 zeaT`C1}b86Uv$o(oRi`@q%VX}Lq#V~SS1)LYG{1*6fEUzGABKO*=gUE7w;4c=60Jl zd!YNcJ7Viiyjn&Z4s@%S2~{kQ20F=+5d-4?Vxu>T$VyfVZ(_Q? zB}rY)bM&BPyX4r4IoEHsKnQ}>{o2)}1@YrB=9OUnvsT6Gs|ig=8I5mbg7Z@f0f-E5;X`)c<@nK7g*`Y#YU- z&6dF=IOc7~HX%=gZ`}52>+*wM3O_4#&N#xn)}zom;9HGwTGHDZ;gmLUlq{ zFe*7U93)Rdc9^C`2Cq9KBed0O810U?BuTPV%Ixc}$lZA_xU}={t=-Z{w8@oWP7xJ#NljGVNVU^^cJVOZA`B zKhjpY5`K=*Xb$))8L#wlQ3% ztmCxPTES_@Mm-W1k_8jCz0ELXpPgQ$ zfVjD^+DdhhbXJFl&z~>M9UaYs^!3vf`UYPrVq3ldpQJdlowAK$WkEqAOLS67@hW~C zbq5$~QUVRL;f45{DdR7{Db#h(iQkm~>?*~ka;kXJ*nYINp)Nlr$0Q8;yxKd^HJ zeQjc@^J7?f@%T6%!Pbo#jenuz9W;;V)<&rW68F_p&@en~5B4>g7FY+(gs`{05!v@s zz>)5y1PEbXL2Tos8=lH~L{rBB$2@d9XV7u8h^L80_uqK+?CZ;3S^nnCA$}*2@*I{t z9)zu^7DsSmBO?)XB|%oF`KfrpW@Eo6=u2AY=7qSxP(8WyPg@L_A{Bd#%rzPRp~T@( zjq`?Y@9fv;N^mx-vH}{}M=hM{3=PFFhA(lMsTqN8B&=kgHFDY_0;*<@mz7{Vp_e+h zY?Q^Jg9EWdy;q%KzegMwF$;T9Js;Dt?Jm9Nj_=TkNvqpG zJ{DE53R6R+C@7t_CV|=VWGqUf+Lm|$2|jL^ZEa_YAzb6jbJ+1--eXM*tCq!a>>}!b zkaNoUMwQPMj1P4PIfc|kG|JH_O%POD3?q*0kStCT3RfvnOcp$0vwgSLrc_A7QAWK0 z9xR>(FS>A6+8QM+$HsD*r%CDRDjem;+~NEYDKDNC6EOgQOzln^X^h6u%0a+tcWSdQ zM1c{o+xAIfeA8&40pPP~P>VX4gK?C$YP%gz!BV}{-GmcnPvWwZk6P4L36>)j`Hn(b z_kwP$&FaIR#Go+|6HcleQATbOs)1a0a`*}|0g2CoP@-7%pgnRm(ExNKLD=ntvGHB9 zmXvCryuoCiY59NtZg*rQYpqXJ1=uumysh64+m4cdxuqpG*TT$oM1fIR<0+uS@ zRkt;NhEpoB1hn1NELGf#-Yf8SLkKDgb^EQCe3*50XO~f&b^Z2Tzf~oZsSI%gg(-5d zq>vz-*tyrn1Fu|bmLwR+qwRx=4yX+y!pWAA@eZO^=Y)MlMFFV~tsKq$xYG+U*MOB1 zA);CmxL##OATB@b$8nA0CQvqTGcV(+$?nd37;s-|fgNj*<}W4Xy~NZZi->-VF2ov% z0_D!o(bLVHE=Ne=d=z0oR6{!I;GS~AM1(mkIq9=Zb@VJFu}D8d+$5k69l>GA{R-cRkT zF*s5dcS$0F2|8$7Klb+>MqFtCR8_hmQ7mqxQYjTAy@%2gx)Xs`Kw>JGFt%j6Y|DzvYtsg3#eQh0jFXsSt$Zj$7#tGG;KK^>J7kOgWUn+ozH=K%XsX?`Qu7@`+TSV1j(2K7T^@i$;x=4%NcRqbNC) za$-v!R&9jsv)CDjo|bTbA=cRj*`G8icPUchVlJhdQG%LD&3iu8bFnP`;w= z6hjq=vB0s$S>G9O+&Xy6t=ANS=H%i!8W%7RPdMa69W-J1+o~~`1bNW{09nxvjc8cgmv<;w(L2J=85b5EL-!qAHBqlB&^$I4Ar;-FI z#0Q*}Siz`Ghlgh|t=Jl@PG!qVvI|_23sxxs&zKSw9hHFIhGYnfe}qt{@avv< z%By4F6TAs+ZsClaQ?<1F7SIkBrHRd^Ba5n8S+wf#V-EB7q)ASros7a|Rkbz>5{RqSo;?bs%Pipn6MM zDVoUwi)N%|Lab}xQ+L@Rb}GJ}H|7VeajYl3%_5;wCW9VShS-EfiSTvBZ46gWZ3{?- zOS*P3p~-Z~tcI!N&}tT!XQEv)K{Jg7H8NZZzT~A`ga02>J6lOKq~Z+q1S>AkQ3cu- zeiZuE!S5tg{)xI}_Yng%&x`?hK@?BsjD~S6DeFTU4ulv(2zVo3$C9-j`u|#<0Ma0V zQE_jmHB`^x)M6vkp2Yrj85}2&;Wf?9s^M^fYpcNTPU62dBh)z&J3kIcNzAz5kH?r1 z_MOzd82#u;Wb1ku}Y-S|Vfn5yoCKHG`Me)D{aOGVz3n6WI8wYj`+qu?egodE^ zQw>O@OzB9f8@@%X7$}^#h=clYG}#V5lQ@#@upygEJzUk>fXD1B4Wg1V8RJg5&&IrK z7J#L?vTLDm@<09Y{rA>)*7m=6x)D6yf3g)kJ@|BMb1f*=78XALU~OSxeSe)_+^sJz z!Dgu3^~3JM!p3&-LE-+{=)C*jK004KxDT6u7@UnpgBk`rd9_+xYe|N8PY>gBGwz&$+fw=dz_d$pPl zVMs@^bp{tK)jzC%40`~SX?I=)t!@~{tHoaUs&h(5j$+Vh1K|DuUemiP52Vo~U zjP!z@PerfM3nI>6hG)t!I1dM8wuc~Y6wNe(xkyKN-1J}$P%cOkO&;bOP%3-lcya8( zW)li0kdrs~;(81Y;~U`7lj3G@ekhoZ$mvn_$lwD2e?vVPg{RG?_5(_E249+Yxd;wb zj9bx7a_JFXMJMs2XZi4=i};(K2Xe^Irl2Y?BNbKPlx#}EZ{DVrWN-$vyz?uNSCL|t zMtW%Rs-bsU#)O`g!W$Ca*c>PzC=w8cF4eXl-78#8!9YR;#6C>8jU)zTRD{f*hkw z*$dA*t>8R5r<7`Fm66pqOh+kG`uL2qD(?!PeHjf=#|eBLcoGi!OH2-grI2(0!9| zhN*8bMSqxx>bT9!qYiguZb{siA`4a%j{%D6pYx&@T{H2 zToDownRNAvBFUn>hADuSw+8-{H6w5+ z6@*}QH89muYhX#}#ZEY7MhfYy(GKq00PxkZnj&vBG@3k~iLPm4QGuGM7)&f|7I{>! z^ptB2F3UCr4PE>w$*eHQzn_78_B64Ub?E1I_N;&+s;|uS)H;)Iqy9jDwnm7bOkb>u z^~mhkUuRsrhz7Kwsyhoy!^ASFCY%L1xqb$UvoBN`0rUmzlacH%$I&>NJQ7r7;z*#* z)C^15>H5ZHVP0$`I5UUIPDz_2XXrp&2o=55%tFIPP%BRj&=Ul1EtGr%pSUp(@=t^u zlYxeV5S=!nR48Lg@U)^{PMcR)XcClno?KZI%;F^(14|Q3539=baU7j?IERDSHy)2M zJXT`Vvxb;n66xMsWfIwMg|T77dYQ}I%%m8;wg`5WIRM_8NJocm_fpefK20!ZUCP2- zQ$`dR+d*_1oT+j0;uKYhF)1zEkLh%PpVT76fX~BGSsvaCWc;@Ky&8&aZp%6gycr!4 zRk#>QCAfO~CvK}1p(w4EPY)hG+}NdnqPiactvwiq7fqf3)nIcQL&WbkK5t5mz0JSe zu=cXkKKfQ;{=uBUUBEK{{fmQ*gAG4SQZmE{b8~;QvDM_Fd4TTiH`adc2Z|?YvSU?H zx$HYaHF~NWhm7|pHw~1MP2Mm}N4qr(@We7L(Bl<;EE8#cV{5{6mIW}OtW%Dsk*^p} zI4Q<>`-;gFnp)196w}MnFi$N;12?slI}{a{#EbTcH3BiWk5T-mazX28ES#qub)(UY zEN~X~_f?F&91n!+Y&?0o|3%g;us1tPJu1Ea(fS6#$gHh4p>NZSQ`F;{#{xxyFEUtldUbII+P`c zgVJfCs?j;FW67qJlv4p}u&cqi7k5rEd;$wbY8SQ?Yeoi_hx7CoAv%heO5Y1I7q2)@p| zq&Bkgp90Ev)K}v$sUDA#OudP;g|j~vRR>Uug66U3`1z2-?@pa#Xdv>NpJ7hFPVld$ z;u1HPBq!osaeDvW3CRv+Z#lF2Fh-J6mvNC?`yH(ECKXqA6y9DLYOpppK|ccE)qG!b ztF)@Vr?*FIF!9_0puS+oLGn!|H)_s|K_MtG_f`@X;VE@B8uU<6F1=ysA$jxWkbG^hnOTD z!oi^=@}mr@DiA;@_0b}hqq$OsXn9mu%EB$FyHd}AUh*+P7WFhWOWfA8)mKt3B^m3M zGZk36rhG73CP{I4P2E)*uB{pq*fZ+JEX7C~{PlG>mUb)+mMs3>RX>&ndovocG~BOR zL6kLJ(kg;U6CiaU&Kk~?HYsa>azM;F-%lfA9@S1S2cNJQt6G+}cIPW(62I~B^J#=K zM>3_&VEf#pPAI#+Un_KDGsmZ(p@h}hGw50hnjG`ef%%oGXmTQAVC!;WuXWZRCbc-Z zHmjr_2R*){e2N?@dd+jTbC^yq$+W^o_m#sW=ra?lJKopze6I=5kq+I&Kld36YrcrK zBLfh3A*Gnf*K+#mSSXTuJ^`3VDU_#e=T3Keag@}uOQm#NUfYoTB+N;^z@9+b`XNVW z-p`{|$}{8Xi1)S4cV+l?LM^6MN6D_!c^0*nLZ2(2a!AVN+c5Dc!WA6-P#SSFg%dR3 z+OBTR)v2iodIP(!RsTIr9A~&RyyU@>@ytG0@_WyPw^YnjAo=k~sF0j@_a@X+=S_Kg zFVTi?r9o+ad~Z@&(HEO#l8;H)Uu|8kDY58RHeGib8hw*z5@u_hzG>4*tDchhOjbWl zo=j=(^zKtBj~Yrk>$1-LV>+FuPyrYDTuP~L+Nfu0r_?~sKJYUPbcT*fkj|;2vWL%A zQu)?nPBqodjgzIU@{EzzL%Ad5(r&V{N>L3!_IsUH*fkr#W!Gy5nL#`aAe(yVoS}=| z*y&Vv)N}!j)byA4fM+MKmMEn*oyyqjtkY`^$;#q-rD9SNp>N$Gvx4&XdQcj;m>lDVGJ{^-=46K zBO#>F&67d^BOTPotT~?;Zq5d(yFWvZspb?uNoC+MHpO3VzV8M$bl-gOnoqGmWG)4p zV@6~>8KHIi%am}>&k`50c5|LC#1|d(D&xAf2N-yRHLK?6P64tA#r?)3Oy{$)w!it= zMst7X=NsEA&WY1f%rHFM9P3lGIe9BO+8y;HboLFk^1(aFcI3!K=&%bC3!^-j(H

Bp11kPL7rU1(WW3F6M-$QUYOkgs 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

{Iz#{yoiuda(~ zFxE6KZ6+=B|BfK9R;F8XS1PW!XP-z=H$>e}!#*CD!;+;uVzivU6V4eS1*;ybCG<^R zFce5puDdCop zG+M}8r?1|TjM&EszL@xe6F{h16f%Ler|ciiEMCv_`NJ10Ir+rliJXKZ;JhKqW8{0h z&Fi!F?=U3E+uD`y2n*Mz?=P|wkL|jTeaQ-bPZ1w8fJZkW;`1!}p>yTz+hu3X8#;)j z&WDP{E~-BMF{)nyp+?y^bC(9;XuPWi2LEjz0+9O2#STj4{1BPhMX~`yY*5_VWdxiE zvmyQf5`&N5HHk=pk0y*c9uajcft9GKm+ry%mrrmlmIN7`!?;X`2i{*qUM&XzP8g7RnUb-K~pRqV=GE*}0k2Ze-WdxU+{~}U!VV(RU zGzAO9g;?ebe1BSFe7M6L^Zd1#Dg6rOx*TVHOzmd?;N@}|8dG z!0%R2$nU3Gy^(xYE&(#`ItUAMr*Qcl(2n8y=v3MA8N~Nu{n~1S$Dh_9mgUp9{Gy68 zoY3(j>fa⁡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 z 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

F^<*wt{-N?=#a<~PS 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

9iv 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 v8rfR#tvZ3FY$_7g3!Th)<^m=LX}sBg;0Pj^~$G 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 tG6me;b1Q|E)+P1*KMXk&PDN`2#-{)P literal 0 HcmV?d00001 diff --git a/src/launchpad.net/goyaml/.bzrignore b/src/launchpad.net/goyaml/.bzrignore new file mode 100644 index 0000000..52c98ab --- /dev/null +++ b/src/launchpad.net/goyaml/.bzrignore @@ -0,0 +1,14 @@ +[568].out +_* +*.cgo*.* + +yaml-*/stamp-h1 +yaml-*/Makefile +yaml-*/*/Makefile +yaml-*/libtool +yaml-*/config* +yaml-*/*/*.lo +yaml-*/*/*.la +yaml-*/*/.libs +yaml-*/*/.deps +yaml-*/tests/* diff --git a/src/launchpad.net/goyaml/.lbox b/src/launchpad.net/goyaml/.lbox new file mode 100644 index 0000000..90ebc09 --- /dev/null +++ b/src/launchpad.net/goyaml/.lbox @@ -0,0 +1 @@ +propose -cr -for=lp:goyaml diff --git a/src/launchpad.net/goyaml/.lbox.check b/src/launchpad.net/goyaml/.lbox.check new file mode 100755 index 0000000..b4211c2 --- /dev/null +++ b/src/launchpad.net/goyaml/.lbox.check @@ -0,0 +1,20 @@ +#!/bin/sh + +set -e + +BADFMT=`find * -name '*.go' | xargs gofmt -l` +if [ -n "$BADFMT" ]; then + BADFMT=`echo "$BADFMT" | sed "s/^/ /"` + echo -e "gofmt is sad:\n\n$BADFMT" + exit 1 +fi + +VERSION=`go version | awk '{print $3}'` +if [ $VERSION == 'devel' ]; then + go tool vet \ + -methods \ + -printf \ + -rangeloops \ + -printfuncs 'ErrorContextf:1,notFoundf:0,badReqErrorf:0,Commitf:0,Snapshotf:0,Debugf:0' \ + . +fi diff --git a/src/launchpad.net/goyaml/LICENSE b/src/launchpad.net/goyaml/LICENSE new file mode 100644 index 0000000..53320c3 --- /dev/null +++ b/src/launchpad.net/goyaml/LICENSE @@ -0,0 +1,185 @@ +This software is licensed under the LGPLv3, included below. + +As a special exception to the GNU Lesser General Public License version 3 +("LGPL3"), the copyright holders of this Library give you permission to +convey to a third party a Combined Work that links statically or dynamically +to this Library without providing any Minimal Corresponding Source or +Minimal Application Code as set out in 4d or providing the installation +information set out in section 4e, provided that you comply with the other +provisions of LGPL3 and provided that you meet, for the Application the +terms and conditions of the license(s) which apply to the Application. + +Except as stated in this special exception, the provisions of LGPL3 will +continue to comply in full to this Library. If you modify this Library, you +may apply this exception to your version of this Library, but you are not +obliged to do so. If you do not wish to do so, delete this exception +statement from your version. This exception does not (and cannot) modify any +license terms which apply to the Application, with which you must still +comply. + + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/src/launchpad.net/goyaml/LICENSE.libyaml b/src/launchpad.net/goyaml/LICENSE.libyaml new file mode 100644 index 0000000..050ced2 --- /dev/null +++ b/src/launchpad.net/goyaml/LICENSE.libyaml @@ -0,0 +1,19 @@ +Copyright (c) 2006 Kirill Simonov + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/launchpad.net/goyaml/Makefile b/src/launchpad.net/goyaml/Makefile new file mode 100644 index 0000000..873d53b --- /dev/null +++ b/src/launchpad.net/goyaml/Makefile @@ -0,0 +1,39 @@ +include $(GOROOT)/src/Make.inc + +YAML=yaml-0.1.3 +LIBYAML=$(PWD)/$(YAML)/src/.libs/libyaml.a + +TARG=launchpad.net/goyaml + +GOFILES=\ + goyaml.go\ + resolve.go\ + +CGOFILES=\ + decode.go\ + encode.go\ + +CGO_OFILES+=\ + helpers.o\ + api.o\ + scanner.o\ + reader.o\ + parser.o\ + writer.o\ + emitter.o\ + +GOFMT=gofmt + +BADFMT:=$(shell $(GOFMT) -l $(GOFILES) $(CGOFILES) $(wildcard *_test.go)) + +all: package +gofmt: $(BADFMT) + @for F in $(BADFMT); do $(GOFMT) -w $$F && echo $$F; done + +include $(GOROOT)/src/Make.pkg + +ifneq ($(BADFMT),) +ifneq ($(MAKECMDGOALS),gofmt) +$(warning WARNING: make gofmt: $(BADFMT)) +endif +endif diff --git a/src/launchpad.net/goyaml/apic.go b/src/launchpad.net/goyaml/apic.go new file mode 100644 index 0000000..29be91d --- /dev/null +++ b/src/launchpad.net/goyaml/apic.go @@ -0,0 +1,742 @@ +package goyaml + +import ( + "io" + "os" +) + +func yaml_insert_token(parser *yaml_parser_t, pos int, token *yaml_token_t) { + //fmt.Println("yaml_insert_token", "pos:", pos, "typ:", token.typ, "head:", parser.tokens_head, "len:", len(parser.tokens)) + + // Check if we can move the queue at the beginning of the buffer. + if parser.tokens_head > 0 && len(parser.tokens) == cap(parser.tokens) { + if parser.tokens_head != len(parser.tokens) { + copy(parser.tokens, parser.tokens[parser.tokens_head:]) + } + parser.tokens = parser.tokens[:len(parser.tokens)-parser.tokens_head] + parser.tokens_head = 0 + } + parser.tokens = append(parser.tokens, *token) + if pos < 0 { + return + } + copy(parser.tokens[parser.tokens_head+pos+1:], parser.tokens[parser.tokens_head+pos:]) + parser.tokens[parser.tokens_head+pos] = *token +} + +// Create a new parser object. +func yaml_parser_initialize(parser *yaml_parser_t) bool { + *parser = yaml_parser_t{ + raw_buffer: make([]byte, 0, input_raw_buffer_size), + buffer: make([]byte, 0, input_buffer_size), + } + return true +} + +// Destroy a parser object. +func yaml_parser_delete(parser *yaml_parser_t) { + *parser = yaml_parser_t{} +} + +// String read handler. +func yaml_string_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) { + if parser.input_pos == len(parser.input) { + return 0, io.EOF + } + n = copy(buffer, parser.input[parser.input_pos:]) + parser.input_pos += n + return n, nil +} + +// File read handler. +func yaml_file_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) { + return parser.input_file.Read(buffer) +} + +// Set a string input. +func yaml_parser_set_input_string(parser *yaml_parser_t, input []byte) { + if parser.read_handler != nil { + panic("must set the input source only once") + } + parser.read_handler = yaml_string_read_handler + parser.input = input + parser.input_pos = 0 +} + +// Set a file input. +func yaml_parser_set_input_file(parser *yaml_parser_t, file *os.File) { + if parser.read_handler != nil { + panic("must set the input source only once") + } + parser.read_handler = yaml_file_read_handler + parser.input_file = file +} + +// Set the source encoding. +func yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encoding_t) { + if parser.encoding != yaml_ANY_ENCODING { + panic("must set the encoding only once") + } + parser.encoding = encoding +} + +// Create a new emitter object. +func yaml_emitter_initialize(emitter *yaml_emitter_t) bool { + *emitter = yaml_emitter_t{ + buffer: make([]byte, output_buffer_size), + raw_buffer: make([]byte, 0, output_raw_buffer_size), + states: make([]yaml_emitter_state_t, 0, initial_stack_size), + events: make([]yaml_event_t, 0, initial_queue_size), + } + return true +} + +// Destroy an emitter object. +func yaml_emitter_delete(emitter *yaml_emitter_t) { + *emitter = yaml_emitter_t{} +} + +// String write handler. +func yaml_string_write_handler(emitter *yaml_emitter_t, buffer []byte) error { + *emitter.output_buffer = append(*emitter.output_buffer, buffer...) + return nil +} + +// File write handler. +func yaml_file_write_handler(emitter *yaml_emitter_t, buffer []byte) error { + _, err := emitter.output_file.Write(buffer) + return err +} + +// Set a string output. +func yaml_emitter_set_output_string(emitter *yaml_emitter_t, output_buffer *[]byte) { + if emitter.write_handler != nil { + panic("must set the output target only once") + } + emitter.write_handler = yaml_string_write_handler + emitter.output_buffer = output_buffer +} + +// Set a file output. +func yaml_emitter_set_output_file(emitter *yaml_emitter_t, file io.Writer) { + if emitter.write_handler != nil { + panic("must set the output target only once") + } + emitter.write_handler = yaml_file_write_handler + emitter.output_file = file +} + +// Set the output encoding. +func yaml_emitter_set_encoding(emitter *yaml_emitter_t, encoding yaml_encoding_t) { + if emitter.encoding != yaml_ANY_ENCODING { + panic("must set the output encoding only once") + } + emitter.encoding = encoding +} + +// Set the canonical output style. +func yaml_emitter_set_canonical(emitter *yaml_emitter_t, canonical bool) { + emitter.canonical = canonical +} + +//// Set the indentation increment. +func yaml_emitter_set_indent(emitter *yaml_emitter_t, indent int) { + if indent < 2 || indent > 9 { + indent = 2 + } + emitter.best_indent = indent +} + +// Set the preferred line width. +func yaml_emitter_set_width(emitter *yaml_emitter_t, width int) { + if width < 0 { + width = -1 + } + emitter.best_width = width +} + +// Set if unescaped non-ASCII characters are allowed. +func yaml_emitter_set_unicode(emitter *yaml_emitter_t, unicode bool) { + emitter.unicode = unicode +} + +// Set the preferred line break character. +func yaml_emitter_set_break(emitter *yaml_emitter_t, line_break yaml_break_t) { + emitter.line_break = line_break +} + +///* +// * Destroy a token object. +// */ +// +//YAML_DECLARE(void) +//yaml_token_delete(yaml_token_t *token) +//{ +// assert(token); // Non-NULL token object expected. +// +// switch (token.type) +// { +// case YAML_TAG_DIRECTIVE_TOKEN: +// yaml_free(token.data.tag_directive.handle); +// yaml_free(token.data.tag_directive.prefix); +// break; +// +// case YAML_ALIAS_TOKEN: +// yaml_free(token.data.alias.value); +// break; +// +// case YAML_ANCHOR_TOKEN: +// yaml_free(token.data.anchor.value); +// break; +// +// case YAML_TAG_TOKEN: +// yaml_free(token.data.tag.handle); +// yaml_free(token.data.tag.suffix); +// break; +// +// case YAML_SCALAR_TOKEN: +// yaml_free(token.data.scalar.value); +// break; +// +// default: +// break; +// } +// +// memset(token, 0, sizeof(yaml_token_t)); +//} +// +///* +// * Check if a string is a valid UTF-8 sequence. +// * +// * Check 'reader.c' for more details on UTF-8 encoding. +// */ +// +//static int +//yaml_check_utf8(yaml_char_t *start, size_t length) +//{ +// yaml_char_t *end = start+length; +// yaml_char_t *pointer = start; +// +// while (pointer < end) { +// unsigned char octet; +// unsigned int width; +// unsigned int value; +// size_t k; +// +// octet = pointer[0]; +// width = (octet & 0x80) == 0x00 ? 1 : +// (octet & 0xE0) == 0xC0 ? 2 : +// (octet & 0xF0) == 0xE0 ? 3 : +// (octet & 0xF8) == 0xF0 ? 4 : 0; +// value = (octet & 0x80) == 0x00 ? octet & 0x7F : +// (octet & 0xE0) == 0xC0 ? octet & 0x1F : +// (octet & 0xF0) == 0xE0 ? octet & 0x0F : +// (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0; +// if (!width) return 0; +// if (pointer+width > end) return 0; +// for (k = 1; k < width; k ++) { +// octet = pointer[k]; +// if ((octet & 0xC0) != 0x80) return 0; +// value = (value << 6) + (octet & 0x3F); +// } +// if (!((width == 1) || +// (width == 2 && value >= 0x80) || +// (width == 3 && value >= 0x800) || +// (width == 4 && value >= 0x10000))) return 0; +// +// pointer += width; +// } +// +// return 1; +//} +// + +// Create STREAM-START. +func yaml_stream_start_event_initialize(event *yaml_event_t, encoding yaml_encoding_t) bool { + *event = yaml_event_t{ + typ: yaml_STREAM_START_EVENT, + encoding: encoding, + } + return true +} + +// Create STREAM-END. +func yaml_stream_end_event_initialize(event *yaml_event_t) bool { + *event = yaml_event_t{ + typ: yaml_STREAM_END_EVENT, + } + return true +} + +// Create DOCUMENT-START. +func yaml_document_start_event_initialize(event *yaml_event_t, version_directive *yaml_version_directive_t, + tag_directives []yaml_tag_directive_t, implicit bool) bool { + *event = yaml_event_t{ + typ: yaml_DOCUMENT_START_EVENT, + version_directive: version_directive, + tag_directives: tag_directives, + implicit: implicit, + } + return true +} + +// Create DOCUMENT-END. +func yaml_document_end_event_initialize(event *yaml_event_t, implicit bool) bool { + *event = yaml_event_t{ + typ: yaml_DOCUMENT_END_EVENT, + implicit: implicit, + } + return true +} + +///* +// * Create ALIAS. +// */ +// +//YAML_DECLARE(int) +//yaml_alias_event_initialize(event *yaml_event_t, anchor *yaml_char_t) +//{ +// mark yaml_mark_t = { 0, 0, 0 } +// anchor_copy *yaml_char_t = NULL +// +// assert(event) // Non-NULL event object is expected. +// assert(anchor) // Non-NULL anchor is expected. +// +// if (!yaml_check_utf8(anchor, strlen((char *)anchor))) return 0 +// +// anchor_copy = yaml_strdup(anchor) +// if (!anchor_copy) +// return 0 +// +// ALIAS_EVENT_INIT(*event, anchor_copy, mark, mark) +// +// return 1 +//} + +// Create SCALAR. +func yaml_scalar_event_initialize(event *yaml_event_t, anchor, tag, value []byte, plain_implicit, quoted_implicit bool, style yaml_scalar_style_t) bool { + *event = yaml_event_t{ + typ: yaml_SCALAR_EVENT, + anchor: anchor, + tag: tag, + value: value, + implicit: plain_implicit, + quoted_implicit: quoted_implicit, + style: yaml_style_t(style), + } + return true +} + +// Create SEQUENCE-START. +func yaml_sequence_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_sequence_style_t) bool { + *event = yaml_event_t{ + typ: yaml_SEQUENCE_START_EVENT, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(style), + } + return true +} + +// Create SEQUENCE-END. +func yaml_sequence_end_event_initialize(event *yaml_event_t) bool { + *event = yaml_event_t{ + typ: yaml_SEQUENCE_END_EVENT, + } + return true +} + +// Create MAPPING-START. +func yaml_mapping_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_mapping_style_t) bool { + *event = yaml_event_t{ + typ: yaml_MAPPING_START_EVENT, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(style), + } + return true +} + +// Create MAPPING-END. +func yaml_mapping_end_event_initialize(event *yaml_event_t) bool { + *event = yaml_event_t{ + typ: yaml_MAPPING_END_EVENT, + } + return true +} + +// Destroy an event object. +func yaml_event_delete(event *yaml_event_t) { + *event = yaml_event_t{} +} + +///* +// * Create a document object. +// */ +// +//YAML_DECLARE(int) +//yaml_document_initialize(document *yaml_document_t, +// version_directive *yaml_version_directive_t, +// tag_directives_start *yaml_tag_directive_t, +// tag_directives_end *yaml_tag_directive_t, +// start_implicit int, end_implicit int) +//{ +// struct { +// error yaml_error_type_t +// } context +// struct { +// start *yaml_node_t +// end *yaml_node_t +// top *yaml_node_t +// } nodes = { NULL, NULL, NULL } +// version_directive_copy *yaml_version_directive_t = NULL +// struct { +// start *yaml_tag_directive_t +// end *yaml_tag_directive_t +// top *yaml_tag_directive_t +// } tag_directives_copy = { NULL, NULL, NULL } +// value yaml_tag_directive_t = { NULL, NULL } +// mark yaml_mark_t = { 0, 0, 0 } +// +// assert(document) // Non-NULL document object is expected. +// assert((tag_directives_start && tag_directives_end) || +// (tag_directives_start == tag_directives_end)) +// // Valid tag directives are expected. +// +// if (!STACK_INIT(&context, nodes, INITIAL_STACK_SIZE)) goto error +// +// if (version_directive) { +// version_directive_copy = yaml_malloc(sizeof(yaml_version_directive_t)) +// if (!version_directive_copy) goto error +// version_directive_copy.major = version_directive.major +// version_directive_copy.minor = version_directive.minor +// } +// +// if (tag_directives_start != tag_directives_end) { +// tag_directive *yaml_tag_directive_t +// if (!STACK_INIT(&context, tag_directives_copy, INITIAL_STACK_SIZE)) +// goto error +// for (tag_directive = tag_directives_start +// tag_directive != tag_directives_end; tag_directive ++) { +// assert(tag_directive.handle) +// assert(tag_directive.prefix) +// if (!yaml_check_utf8(tag_directive.handle, +// strlen((char *)tag_directive.handle))) +// goto error +// if (!yaml_check_utf8(tag_directive.prefix, +// strlen((char *)tag_directive.prefix))) +// goto error +// value.handle = yaml_strdup(tag_directive.handle) +// value.prefix = yaml_strdup(tag_directive.prefix) +// if (!value.handle || !value.prefix) goto error +// if (!PUSH(&context, tag_directives_copy, value)) +// goto error +// value.handle = NULL +// value.prefix = NULL +// } +// } +// +// DOCUMENT_INIT(*document, nodes.start, nodes.end, version_directive_copy, +// tag_directives_copy.start, tag_directives_copy.top, +// start_implicit, end_implicit, mark, mark) +// +// return 1 +// +//error: +// STACK_DEL(&context, nodes) +// yaml_free(version_directive_copy) +// while (!STACK_EMPTY(&context, tag_directives_copy)) { +// value yaml_tag_directive_t = POP(&context, tag_directives_copy) +// yaml_free(value.handle) +// yaml_free(value.prefix) +// } +// STACK_DEL(&context, tag_directives_copy) +// yaml_free(value.handle) +// yaml_free(value.prefix) +// +// return 0 +//} +// +///* +// * Destroy a document object. +// */ +// +//YAML_DECLARE(void) +//yaml_document_delete(document *yaml_document_t) +//{ +// struct { +// error yaml_error_type_t +// } context +// tag_directive *yaml_tag_directive_t +// +// context.error = YAML_NO_ERROR // Eliminate a compliler warning. +// +// assert(document) // Non-NULL document object is expected. +// +// while (!STACK_EMPTY(&context, document.nodes)) { +// node yaml_node_t = POP(&context, document.nodes) +// yaml_free(node.tag) +// switch (node.type) { +// case YAML_SCALAR_NODE: +// yaml_free(node.data.scalar.value) +// break +// case YAML_SEQUENCE_NODE: +// STACK_DEL(&context, node.data.sequence.items) +// break +// case YAML_MAPPING_NODE: +// STACK_DEL(&context, node.data.mapping.pairs) +// break +// default: +// assert(0) // Should not happen. +// } +// } +// STACK_DEL(&context, document.nodes) +// +// yaml_free(document.version_directive) +// for (tag_directive = document.tag_directives.start +// tag_directive != document.tag_directives.end +// tag_directive++) { +// yaml_free(tag_directive.handle) +// yaml_free(tag_directive.prefix) +// } +// yaml_free(document.tag_directives.start) +// +// memset(document, 0, sizeof(yaml_document_t)) +//} +// +///** +// * Get a document node. +// */ +// +//YAML_DECLARE(yaml_node_t *) +//yaml_document_get_node(document *yaml_document_t, index int) +//{ +// assert(document) // Non-NULL document object is expected. +// +// if (index > 0 && document.nodes.start + index <= document.nodes.top) { +// return document.nodes.start + index - 1 +// } +// return NULL +//} +// +///** +// * Get the root object. +// */ +// +//YAML_DECLARE(yaml_node_t *) +//yaml_document_get_root_node(document *yaml_document_t) +//{ +// assert(document) // Non-NULL document object is expected. +// +// if (document.nodes.top != document.nodes.start) { +// return document.nodes.start +// } +// return NULL +//} +// +///* +// * Add a scalar node to a document. +// */ +// +//YAML_DECLARE(int) +//yaml_document_add_scalar(document *yaml_document_t, +// tag *yaml_char_t, value *yaml_char_t, length int, +// style yaml_scalar_style_t) +//{ +// struct { +// error yaml_error_type_t +// } context +// mark yaml_mark_t = { 0, 0, 0 } +// tag_copy *yaml_char_t = NULL +// value_copy *yaml_char_t = NULL +// node yaml_node_t +// +// assert(document) // Non-NULL document object is expected. +// assert(value) // Non-NULL value is expected. +// +// if (!tag) { +// tag = (yaml_char_t *)YAML_DEFAULT_SCALAR_TAG +// } +// +// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error +// tag_copy = yaml_strdup(tag) +// if (!tag_copy) goto error +// +// if (length < 0) { +// length = strlen((char *)value) +// } +// +// if (!yaml_check_utf8(value, length)) goto error +// value_copy = yaml_malloc(length+1) +// if (!value_copy) goto error +// memcpy(value_copy, value, length) +// value_copy[length] = '\0' +// +// SCALAR_NODE_INIT(node, tag_copy, value_copy, length, style, mark, mark) +// if (!PUSH(&context, document.nodes, node)) goto error +// +// return document.nodes.top - document.nodes.start +// +//error: +// yaml_free(tag_copy) +// yaml_free(value_copy) +// +// return 0 +//} +// +///* +// * Add a sequence node to a document. +// */ +// +//YAML_DECLARE(int) +//yaml_document_add_sequence(document *yaml_document_t, +// tag *yaml_char_t, style yaml_sequence_style_t) +//{ +// struct { +// error yaml_error_type_t +// } context +// mark yaml_mark_t = { 0, 0, 0 } +// tag_copy *yaml_char_t = NULL +// struct { +// start *yaml_node_item_t +// end *yaml_node_item_t +// top *yaml_node_item_t +// } items = { NULL, NULL, NULL } +// node yaml_node_t +// +// assert(document) // Non-NULL document object is expected. +// +// if (!tag) { +// tag = (yaml_char_t *)YAML_DEFAULT_SEQUENCE_TAG +// } +// +// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error +// tag_copy = yaml_strdup(tag) +// if (!tag_copy) goto error +// +// if (!STACK_INIT(&context, items, INITIAL_STACK_SIZE)) goto error +// +// SEQUENCE_NODE_INIT(node, tag_copy, items.start, items.end, +// style, mark, mark) +// if (!PUSH(&context, document.nodes, node)) goto error +// +// return document.nodes.top - document.nodes.start +// +//error: +// STACK_DEL(&context, items) +// yaml_free(tag_copy) +// +// return 0 +//} +// +///* +// * Add a mapping node to a document. +// */ +// +//YAML_DECLARE(int) +//yaml_document_add_mapping(document *yaml_document_t, +// tag *yaml_char_t, style yaml_mapping_style_t) +//{ +// struct { +// error yaml_error_type_t +// } context +// mark yaml_mark_t = { 0, 0, 0 } +// tag_copy *yaml_char_t = NULL +// struct { +// start *yaml_node_pair_t +// end *yaml_node_pair_t +// top *yaml_node_pair_t +// } pairs = { NULL, NULL, NULL } +// node yaml_node_t +// +// assert(document) // Non-NULL document object is expected. +// +// if (!tag) { +// tag = (yaml_char_t *)YAML_DEFAULT_MAPPING_TAG +// } +// +// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error +// tag_copy = yaml_strdup(tag) +// if (!tag_copy) goto error +// +// if (!STACK_INIT(&context, pairs, INITIAL_STACK_SIZE)) goto error +// +// MAPPING_NODE_INIT(node, tag_copy, pairs.start, pairs.end, +// style, mark, mark) +// if (!PUSH(&context, document.nodes, node)) goto error +// +// return document.nodes.top - document.nodes.start +// +//error: +// STACK_DEL(&context, pairs) +// yaml_free(tag_copy) +// +// return 0 +//} +// +///* +// * Append an item to a sequence node. +// */ +// +//YAML_DECLARE(int) +//yaml_document_append_sequence_item(document *yaml_document_t, +// sequence int, item int) +//{ +// struct { +// error yaml_error_type_t +// } context +// +// assert(document) // Non-NULL document is required. +// assert(sequence > 0 +// && document.nodes.start + sequence <= document.nodes.top) +// // Valid sequence id is required. +// assert(document.nodes.start[sequence-1].type == YAML_SEQUENCE_NODE) +// // A sequence node is required. +// assert(item > 0 && document.nodes.start + item <= document.nodes.top) +// // Valid item id is required. +// +// if (!PUSH(&context, +// document.nodes.start[sequence-1].data.sequence.items, item)) +// return 0 +// +// return 1 +//} +// +///* +// * Append a pair of a key and a value to a mapping node. +// */ +// +//YAML_DECLARE(int) +//yaml_document_append_mapping_pair(document *yaml_document_t, +// mapping int, key int, value int) +//{ +// struct { +// error yaml_error_type_t +// } context +// +// pair yaml_node_pair_t +// +// assert(document) // Non-NULL document is required. +// assert(mapping > 0 +// && document.nodes.start + mapping <= document.nodes.top) +// // Valid mapping id is required. +// assert(document.nodes.start[mapping-1].type == YAML_MAPPING_NODE) +// // A mapping node is required. +// assert(key > 0 && document.nodes.start + key <= document.nodes.top) +// // Valid key id is required. +// assert(value > 0 && document.nodes.start + value <= document.nodes.top) +// // Valid value id is required. +// +// pair.key = key +// pair.value = value +// +// if (!PUSH(&context, +// document.nodes.start[mapping-1].data.mapping.pairs, pair)) +// return 0 +// +// return 1 +//} +// +// diff --git a/src/launchpad.net/goyaml/decode.go b/src/launchpad.net/goyaml/decode.go new file mode 100644 index 0000000..6586be4 --- /dev/null +++ b/src/launchpad.net/goyaml/decode.go @@ -0,0 +1,473 @@ +package goyaml + +import ( + "reflect" + "strconv" +) + +const ( + documentNode = 1 << iota + mappingNode + sequenceNode + scalarNode + aliasNode +) + +type node struct { + kind int + line, column int + tag string + value string + implicit bool + children []*node + anchors map[string]*node +} + +// ---------------------------------------------------------------------------- +// Parser, produces a node tree out of a libyaml event stream. + +type parser struct { + parser yaml_parser_t + event yaml_event_t + doc *node +} + +func newParser(b []byte) *parser { + p := parser{} + if !yaml_parser_initialize(&p.parser) { + panic("Failed to initialize YAML emitter") + } + + if len(b) == 0 { + b = []byte{'\n'} + } + + yaml_parser_set_input_string(&p.parser, b) + + p.skip() + if p.event.typ != yaml_STREAM_START_EVENT { + panic("Expected stream start event, got " + strconv.Itoa(int(p.event.typ))) + } + p.skip() + return &p +} + +func (p *parser) destroy() { + if p.event.typ != yaml_NO_EVENT { + yaml_event_delete(&p.event) + } + yaml_parser_delete(&p.parser) +} + +func (p *parser) skip() { + if p.event.typ != yaml_NO_EVENT { + if p.event.typ == yaml_STREAM_END_EVENT { + panic("Attempted to go past the end of stream. Corrupted value?") + } + yaml_event_delete(&p.event) + } + if !yaml_parser_parse(&p.parser, &p.event) { + p.fail() + } +} + +func (p *parser) fail() { + var where string + var line int + if p.parser.problem_mark.line != 0 { + line = p.parser.problem_mark.line + } else if p.parser.context_mark.line != 0 { + line = p.parser.context_mark.line + } + if line != 0 { + where = "line " + strconv.Itoa(line) + ": " + } + var msg string + if len(p.parser.problem) > 0 { + msg = p.parser.problem + } else { + msg = "Unknown problem parsing YAML content" + } + panic(where + msg) +} + +func (p *parser) anchor(n *node, anchor []byte) { + if anchor != nil { + p.doc.anchors[string(anchor)] = n + } +} + +func (p *parser) parse() *node { + switch p.event.typ { + case yaml_SCALAR_EVENT: + return p.scalar() + case yaml_ALIAS_EVENT: + return p.alias() + case yaml_MAPPING_START_EVENT: + return p.mapping() + case yaml_SEQUENCE_START_EVENT: + return p.sequence() + case yaml_DOCUMENT_START_EVENT: + return p.document() + case yaml_STREAM_END_EVENT: + // Happens when attempting to decode an empty buffer. + return nil + default: + panic("Attempted to parse unknown event: " + + strconv.Itoa(int(p.event.typ))) + } + panic("Unreachable") +} + +func (p *parser) node(kind int) *node { + return &node{ + kind: kind, + line: p.event.start_mark.line, + column: p.event.start_mark.column, + } +} + +func (p *parser) document() *node { + n := p.node(documentNode) + n.anchors = make(map[string]*node) + p.doc = n + p.skip() + n.children = append(n.children, p.parse()) + if p.event.typ != yaml_DOCUMENT_END_EVENT { + panic("Expected end of document event but got " + + strconv.Itoa(int(p.event.typ))) + } + p.skip() + return n +} + +func (p *parser) alias() *node { + n := p.node(aliasNode) + n.value = string(p.event.anchor) + p.skip() + return n +} + +func (p *parser) scalar() *node { + n := p.node(scalarNode) + n.value = string(p.event.value) + n.tag = string(p.event.tag) + n.implicit = p.event.implicit + p.anchor(n, p.event.anchor) + p.skip() + return n +} + +func (p *parser) sequence() *node { + n := p.node(sequenceNode) + p.anchor(n, p.event.anchor) + p.skip() + for p.event.typ != yaml_SEQUENCE_END_EVENT { + n.children = append(n.children, p.parse()) + } + p.skip() + return n +} + +func (p *parser) mapping() *node { + n := p.node(mappingNode) + p.anchor(n, p.event.anchor) + p.skip() + for p.event.typ != yaml_MAPPING_END_EVENT { + n.children = append(n.children, p.parse(), p.parse()) + } + p.skip() + return n +} + +// ---------------------------------------------------------------------------- +// Decoder, unmarshals a node into a provided value. + +type decoder struct { + doc *node + aliases map[string]bool +} + +func newDecoder() *decoder { + d := &decoder{} + d.aliases = make(map[string]bool) + return d +} + +// d.setter deals with setters and pointer dereferencing and initialization. +// +// It's a slightly convoluted case to handle properly: +// +// - nil pointers should be initialized, unless being set to nil +// - we don't know at this point yet what's the value to SetYAML() with. +// - we can't separate pointer deref/init and setter checking, because +// a setter may be found while going down a pointer chain. +// +// Thus, here is how it takes care of it: +// +// - out is provided as a pointer, so that it can be replaced. +// - when looking at a non-setter ptr, *out=ptr.Elem(), unless tag=!!null +// - when a setter is found, *out=interface{}, and a set() function is +// returned to call SetYAML() with the value of *out once it's defined. +// +func (d *decoder) setter(tag string, out *reflect.Value, good *bool) (set func()) { + again := true + for again { + again = false + setter, _ := (*out).Interface().(Setter) + if tag != "!!null" || setter != nil { + if pv := (*out); pv.Kind() == reflect.Ptr { + if pv.IsNil() { + *out = reflect.New(pv.Type().Elem()).Elem() + pv.Set((*out).Addr()) + } else { + *out = pv.Elem() + } + setter, _ = pv.Interface().(Setter) + again = true + } + } + if setter != nil { + var arg interface{} + *out = reflect.ValueOf(&arg).Elem() + return func() { + *good = setter.SetYAML(tag, arg) + } + } + } + return nil +} + +func (d *decoder) unmarshal(n *node, out reflect.Value) (good bool) { + switch n.kind { + case documentNode: + good = d.document(n, out) + case scalarNode: + good = d.scalar(n, out) + case aliasNode: + good = d.alias(n, out) + case mappingNode: + good = d.mapping(n, out) + case sequenceNode: + good = d.sequence(n, out) + default: + panic("Internal error: unknown node kind: " + strconv.Itoa(n.kind)) + } + return +} + +func (d *decoder) document(n *node, out reflect.Value) (good bool) { + if len(n.children) == 1 { + d.doc = n + d.unmarshal(n.children[0], out) + return true + } + return false +} + +func (d *decoder) alias(n *node, out reflect.Value) (good bool) { + an, ok := d.doc.anchors[n.value] + if !ok { + panic("Unknown anchor '" + n.value + "' referenced") + } + if d.aliases[n.value] { + panic("Anchor '" + n.value + "' value contains itself") + } + d.aliases[n.value] = true + good = d.unmarshal(an, out) + delete(d.aliases, n.value) + return good +} + +func (d *decoder) scalar(n *node, out reflect.Value) (good bool) { + var tag string + var resolved interface{} + if n.tag == "" && !n.implicit { + resolved = n.value + } else { + tag, resolved = resolve(n.tag, n.value) + if set := d.setter(tag, &out, &good); set != nil { + defer set() + } + } + switch out.Kind() { + case reflect.String: + if resolved != nil { + out.SetString(n.value) + good = true + } + case reflect.Interface: + if resolved == nil { + out.Set(reflect.Zero(out.Type())) + } else { + out.Set(reflect.ValueOf(resolved)) + } + good = true + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + switch resolved := resolved.(type) { + case int: + if !out.OverflowInt(int64(resolved)) { + out.SetInt(int64(resolved)) + good = true + } + case int64: + if !out.OverflowInt(resolved) { + out.SetInt(resolved) + good = true + } + case float64: + if resolved < 1<<63-1 && !out.OverflowInt(int64(resolved)) { + out.SetInt(int64(resolved)) + good = true + } + } + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + switch resolved := resolved.(type) { + case int: + if resolved >= 0 { + out.SetUint(uint64(resolved)) + good = true + } + case int64: + if resolved >= 0 { + out.SetUint(uint64(resolved)) + good = true + } + case float64: + if resolved < 1<<64-1 && !out.OverflowUint(uint64(resolved)) { + out.SetUint(uint64(resolved)) + good = true + } + } + case reflect.Bool: + switch resolved := resolved.(type) { + case bool: + out.SetBool(resolved) + good = true + } + case reflect.Float32, reflect.Float64: + switch resolved := resolved.(type) { + case int: + out.SetFloat(float64(resolved)) + good = true + case int64: + out.SetFloat(float64(resolved)) + good = true + case float64: + out.SetFloat(resolved) + good = true + } + case reflect.Ptr: + switch resolved.(type) { + case nil: + out.Set(reflect.Zero(out.Type())) + good = true + default: + if out.Type().Elem() == reflect.TypeOf(resolved) { + elem := reflect.New(out.Type().Elem()) + elem.Elem().Set(reflect.ValueOf(resolved)) + out.Set(elem) + good = true + } + } + } + return good +} + +func settableValueOf(i interface{}) reflect.Value { + v := reflect.ValueOf(i) + sv := reflect.New(v.Type()).Elem() + sv.Set(v) + return sv +} + +func (d *decoder) sequence(n *node, out reflect.Value) (good bool) { + if set := d.setter("!!seq", &out, &good); set != nil { + defer set() + } + var iface reflect.Value + if out.Kind() == reflect.Interface { + // No type hints. Will have to use a generic sequence. + iface = out + out = settableValueOf(make([]interface{}, 0)) + } + + if out.Kind() != reflect.Slice { + return false + } + et := out.Type().Elem() + + l := len(n.children) + for i := 0; i < l; i++ { + e := reflect.New(et).Elem() + if ok := d.unmarshal(n.children[i], e); ok { + out.Set(reflect.Append(out, e)) + } + } + if iface.IsValid() { + iface.Set(out) + } + return true +} + +func (d *decoder) mapping(n *node, out reflect.Value) (good bool) { + if set := d.setter("!!map", &out, &good); set != nil { + defer set() + } + if out.Kind() == reflect.Struct { + return d.mappingStruct(n, out) + } + + if out.Kind() == reflect.Interface { + // No type hints. Will have to use a generic map. + iface := out + out = settableValueOf(make(map[interface{}]interface{})) + iface.Set(out) + } + + if out.Kind() != reflect.Map { + return false + } + outt := out.Type() + kt := outt.Key() + et := outt.Elem() + + if out.IsNil() { + out.Set(reflect.MakeMap(outt)) + } + l := len(n.children) + for i := 0; i < l; i += 2 { + k := reflect.New(kt).Elem() + if d.unmarshal(n.children[i], k) { + e := reflect.New(et).Elem() + if d.unmarshal(n.children[i+1], e) { + out.SetMapIndex(k, e) + } + } + } + return true +} + +func (d *decoder) mappingStruct(n *node, out reflect.Value) (good bool) { + sinfo, err := getStructInfo(out.Type()) + if err != nil { + panic(err) + } + name := settableValueOf("") + l := len(n.children) + for i := 0; i < l; i += 2 { + if !d.unmarshal(n.children[i], name) { + continue + } + if info, ok := sinfo.FieldsMap[name.String()]; ok { + var field reflect.Value + if info.Inline == nil { + field = out.Field(info.Num) + } else { + field = out.FieldByIndex(info.Inline) + } + d.unmarshal(n.children[i+1], field) + } + } + return true +} diff --git a/src/launchpad.net/goyaml/decode_test.go b/src/launchpad.net/goyaml/decode_test.go new file mode 100644 index 0000000..83696b5 --- /dev/null +++ b/src/launchpad.net/goyaml/decode_test.go @@ -0,0 +1,519 @@ +package goyaml_test + +import ( + . "launchpad.net/gocheck" + "launchpad.net/goyaml" + "math" + "reflect" +) + +var unmarshalIntTest = 123 + +var unmarshalTests = []struct { + data string + value interface{} +}{ + { + "", + &struct{}{}, + }, { + "{}", &struct{}{}, + }, { + "v: hi", + map[string]string{"v": "hi"}, + }, { + "v: hi", map[string]interface{}{"v": "hi"}, + }, { + "v: true", + map[string]string{"v": "true"}, + }, { + "v: true", + map[string]interface{}{"v": true}, + }, { + "v: 10", + map[string]interface{}{"v": 10}, + }, { + "v: 0b10", + map[string]interface{}{"v": 2}, + }, { + "v: 0xA", + map[string]interface{}{"v": 10}, + }, { + "v: 4294967296", + map[string]int64{"v": 4294967296}, + }, { + "v: 0.1", + map[string]interface{}{"v": 0.1}, + }, { + "v: .1", + map[string]interface{}{"v": 0.1}, + }, { + "v: .Inf", + map[string]interface{}{"v": math.Inf(+1)}, + }, { + "v: -.Inf", + map[string]interface{}{"v": math.Inf(-1)}, + }, { + "v: -10", + map[string]interface{}{"v": -10}, + }, { + "v: -.1", + map[string]interface{}{"v": -0.1}, + }, + + // Simple values. + { + "123", + &unmarshalIntTest, + }, + + // Floats from spec + { + "canonical: 6.8523e+5", + map[string]interface{}{"canonical": 6.8523e+5}, + }, { + "expo: 685.230_15e+03", + map[string]interface{}{"expo": 685.23015e+03}, + }, { + "fixed: 685_230.15", + map[string]interface{}{"fixed": 685230.15}, + }, { + "neginf: -.inf", + map[string]interface{}{"neginf": math.Inf(-1)}, + }, { + "fixed: 685_230.15", + map[string]float64{"fixed": 685230.15}, + }, + //{"sexa: 190:20:30.15", map[string]interface{}{"sexa": 0}}, // Unsupported + //{"notanum: .NaN", map[string]interface{}{"notanum": math.NaN()}}, // Equality of NaN fails. + + // Bools from spec + { + "canonical: y", + map[string]interface{}{"canonical": true}, + }, { + "answer: NO", + map[string]interface{}{"answer": false}, + }, { + "logical: True", + map[string]interface{}{"logical": true}, + }, { + "option: on", + map[string]interface{}{"option": true}, + }, { + "option: on", + map[string]bool{"option": true}, + }, + // Ints from spec + { + "canonical: 685230", + map[string]interface{}{"canonical": 685230}, + }, { + "decimal: +685_230", + map[string]interface{}{"decimal": 685230}, + }, { + "octal: 02472256", + map[string]interface{}{"octal": 685230}, + }, { + "hexa: 0x_0A_74_AE", + map[string]interface{}{"hexa": 685230}, + }, { + "bin: 0b1010_0111_0100_1010_1110", + map[string]interface{}{"bin": 685230}, + }, { + "bin: -0b101010", + map[string]interface{}{"bin": -42}, + }, { + "decimal: +685_230", + map[string]int{"decimal": 685230}, + }, + + //{"sexa: 190:20:30", map[string]interface{}{"sexa": 0}}, // Unsupported + + // Nulls from spec + { + "empty:", + map[string]interface{}{"empty": nil}, + }, { + "canonical: ~", + map[string]interface{}{"canonical": nil}, + }, { + "english: null", + map[string]interface{}{"english": nil}, + }, { + "~: null key", + map[interface{}]string{nil: "null key"}, + }, { + "empty:", + map[string]*bool{"empty": nil}, + }, + + // Flow sequence + { + "seq: [A,B]", + map[string]interface{}{"seq": []interface{}{"A", "B"}}, + }, { + "seq: [A,B,C,]", + map[string][]string{"seq": []string{"A", "B", "C"}}, + }, { + "seq: [A,1,C]", + map[string][]string{"seq": []string{"A", "1", "C"}}, + }, { + "seq: [A,1,C]", + map[string][]int{"seq": []int{1}}, + }, { + "seq: [A,1,C]", + map[string]interface{}{"seq": []interface{}{"A", 1, "C"}}, + }, + // Block sequence + { + "seq:\n - A\n - B", + map[string]interface{}{"seq": []interface{}{"A", "B"}}, + }, { + "seq:\n - A\n - B\n - C", + map[string][]string{"seq": []string{"A", "B", "C"}}, + }, { + "seq:\n - A\n - 1\n - C", + map[string][]string{"seq": []string{"A", "1", "C"}}, + }, { + "seq:\n - A\n - 1\n - C", + map[string][]int{"seq": []int{1}}, + }, { + "seq:\n - A\n - 1\n - C", + map[string]interface{}{"seq": []interface{}{"A", 1, "C"}}, + }, + + // Literal block scalar + { + "scalar: | # Comment\n\n literal\n\n \ttext\n\n", + map[string]string{"scalar": "\nliteral\n\n\ttext\n"}, + }, + + // Folded block scalar + { + "scalar: > # Comment\n\n folded\n line\n \n next\n line\n * one\n * two\n\n last\n line\n\n", + map[string]string{"scalar": "\nfolded line\nnext line\n * one\n * two\n\nlast line\n"}, + }, + + // Map inside interface with no type hints. + { + "a: {b: c}", + map[string]interface{}{"a": map[interface{}]interface{}{"b": "c"}}, + }, + + // Structs and type conversions. + { + "hello: world", + &struct{ Hello string }{"world"}, + }, { + "a: {b: c}", + &struct{ A struct{ B string } }{struct{ B string }{"c"}}, + }, { + "a: {b: c}", + &struct{ A *struct{ B string } }{&struct{ B string }{"c"}}, + }, { + "a: {b: c}", + &struct{ A map[string]string }{map[string]string{"b": "c"}}, + }, { + "a: {b: c}", + &struct{ A *map[string]string }{&map[string]string{"b": "c"}}, + }, { + "a:", + &struct{ A map[string]string }{}, + }, { + "a: 1", + &struct{ A int }{1}, + }, { + "a: 1", + &struct{ A float64 }{1}, + }, { + "a: 1.0", + &struct{ A int }{1}, + }, { + "a: 1.0", + &struct{ A uint }{1}, + }, { + "a: [1, 2]", + &struct{ A []int }{[]int{1, 2}}, + }, { + "a: 1", + &struct{ B int }{0}, + }, { + "a: 1", + &struct { + B int "a" + }{1}, + }, { + "a: y", + &struct{ A bool }{true}, + }, + + // Some cross type conversions + { + "v: 42", + map[string]uint{"v": 42}, + }, { + "v: -42", + map[string]uint{}, + }, { + "v: 4294967296", + map[string]uint64{"v": 4294967296}, + }, { + "v: -4294967296", + map[string]uint64{}, + }, + + // Overflow cases. + { + "v: 4294967297", + map[string]int32{}, + }, { + "v: 128", + map[string]int8{}, + }, + + // Quoted values. + { + "'1': '\"2\"'", + map[interface{}]interface{}{"1": "\"2\""}, + }, { + "v:\n- A\n- 'B\n\n C'\n", + map[string][]string{"v": []string{"A", "B\nC"}}, + }, + + // Explicit tags. + { + "v: !!float '1.1'", + map[string]interface{}{"v": 1.1}, + }, { + "v: !!null ''", + map[string]interface{}{"v": nil}, + }, { + "%TAG !y! tag:yaml.org,2002:\n---\nv: !y!int '1'", + map[string]interface{}{"v": 1}, + }, + + // Anchors and aliases. + { + "a: &x 1\nb: &y 2\nc: *x\nd: *y\n", + &struct{ A, B, C, D int }{1, 2, 1, 2}, + }, { + "a: &a {c: 1}\nb: *a", + &struct { + A, B struct { + C int + } + }{struct{ C int }{1}, struct{ C int }{1}}, + }, { + "a: &a [1, 2]\nb: *a", + &struct{ B []int }{[]int{1, 2}}, + }, + + // Bug #1133337 + { + "foo: ''", + map[string]*string{"foo": new(string)}, + }, { + "foo: null", + map[string]string{}, + }, + + // Ignored field + { + "a: 1\nb: 2\n", + &struct { + A int + B int "-" + }{1, 0}, + }, + + // Bug #1191981 + { + "" + + "%YAML 1.1\n" + + "--- !!str\n" + + `"Generic line break (no glyph)\n\` + "\n" + + ` Generic line break (glyphed)\n\` + "\n" + + ` Line separator\u2028\` + "\n" + + ` Paragraph separator\u2029"` + "\n", + "" + + "Generic line break (no glyph)\n" + + "Generic line break (glyphed)\n" + + "Line separator\u2028Paragraph separator\u2029", + }, + + // Struct inlining + { + "a: 1\nb: 2\nc: 3\n", + &struct { + A int + C inlineB `yaml:",inline"` + }{1, inlineB{2, inlineC{3}}}, + }, +} + +type inlineB struct { + B int + inlineC `yaml:",inline"` +} + +type inlineC struct { + C int +} + +func (s *S) TestUnmarshal(c *C) { + for i, item := range unmarshalTests { + t := reflect.ValueOf(item.value).Type() + var value interface{} + switch t.Kind() { + case reflect.Map: + value = reflect.MakeMap(t).Interface() + case reflect.String: + t := reflect.ValueOf(item.value).Type() + v := reflect.New(t) + value = v.Interface() + default: + pt := reflect.ValueOf(item.value).Type() + pv := reflect.New(pt.Elem()) + value = pv.Interface() + } + err := goyaml.Unmarshal([]byte(item.data), value) + c.Assert(err, IsNil, Commentf("Item #%d", i)) + if t.Kind() == reflect.String { + c.Assert(*value.(*string), Equals, item.value, Commentf("Item #%d", i)) + } else { + c.Assert(value, DeepEquals, item.value, Commentf("Item #%d", i)) + } + } +} + +func (s *S) TestUnmarshalNaN(c *C) { + value := map[string]interface{}{} + err := goyaml.Unmarshal([]byte("notanum: .NaN"), &value) + c.Assert(err, IsNil) + c.Assert(math.IsNaN(value["notanum"].(float64)), Equals, true) +} + +var unmarshalErrorTests = []struct { + data, error string +}{ + {"v: !!float 'error'", "YAML error: Can't decode !!str 'error' as a !!float"}, + {"v: [A,", "YAML error: line 1: did not find expected node content"}, + {"v:\n- [A,", "YAML error: line 2: did not find expected node content"}, + {"a: *b\n", "YAML error: Unknown anchor 'b' referenced"}, + {"a: &a\n b: *a\n", "YAML error: Anchor 'a' value contains itself"}, + {"value: -", "YAML error: block sequence entries are not allowed in this context"}, +} + +func (s *S) TestUnmarshalErrors(c *C) { + for _, item := range unmarshalErrorTests { + var value interface{} + err := goyaml.Unmarshal([]byte(item.data), &value) + c.Assert(err, ErrorMatches, item.error, Commentf("Partial unmarshal: %#v", value)) + } +} + +var setterTests = []struct { + data, tag string + value interface{} +}{ + {"_: {hi: there}", "!!map", map[interface{}]interface{}{"hi": "there"}}, + {"_: [1,A]", "!!seq", []interface{}{1, "A"}}, + {"_: 10", "!!int", 10}, + {"_: null", "!!null", nil}, + {"_: !!foo 'BAR!'", "!!foo", "BAR!"}, +} + +var setterResult = map[int]bool{} + +type typeWithSetter struct { + tag string + value interface{} +} + +func (o *typeWithSetter) SetYAML(tag string, value interface{}) (ok bool) { + o.tag = tag + o.value = value + if i, ok := value.(int); ok { + if result, ok := setterResult[i]; ok { + return result + } + } + return true +} + +type typeWithSetterField struct { + Field *typeWithSetter "_" +} + +func (s *S) TestUnmarshalWithSetter(c *C) { + for _, item := range setterTests { + obj := &typeWithSetterField{} + err := goyaml.Unmarshal([]byte(item.data), obj) + c.Assert(err, IsNil) + c.Assert(obj.Field, NotNil, + Commentf("Pointer not initialized (%#v)", item.value)) + c.Assert(obj.Field.tag, Equals, item.tag) + c.Assert(obj.Field.value, DeepEquals, item.value) + } +} + +func (s *S) TestUnmarshalWholeDocumentWithSetter(c *C) { + obj := &typeWithSetter{} + err := goyaml.Unmarshal([]byte(setterTests[0].data), obj) + c.Assert(err, IsNil) + c.Assert(obj.tag, Equals, setterTests[0].tag) + value, ok := obj.value.(map[interface{}]interface{}) + c.Assert(ok, Equals, true) + c.Assert(value["_"], DeepEquals, setterTests[0].value) +} + +func (s *S) TestUnmarshalWithFalseSetterIgnoresValue(c *C) { + setterResult[2] = false + setterResult[4] = false + defer func() { + delete(setterResult, 2) + delete(setterResult, 4) + }() + + m := map[string]*typeWithSetter{} + data := "{abc: 1, def: 2, ghi: 3, jkl: 4}" + err := goyaml.Unmarshal([]byte(data), m) + c.Assert(err, IsNil) + c.Assert(m["abc"], NotNil) + c.Assert(m["def"], IsNil) + c.Assert(m["ghi"], NotNil) + c.Assert(m["jkl"], IsNil) + + c.Assert(m["abc"].value, Equals, 1) + c.Assert(m["ghi"].value, Equals, 3) +} + +//var data []byte +//func init() { +// var err error +// data, err = ioutil.ReadFile("/tmp/file.yaml") +// if err != nil { +// panic(err) +// } +//} +// +//func (s *S) BenchmarkUnmarshal(c *C) { +// var err error +// for i := 0; i < c.N; i++ { +// var v map[string]interface{} +// err = goyaml.Unmarshal(data, &v) +// } +// if err != nil { +// panic(err) +// } +//} +// +//func (s *S) BenchmarkMarshal(c *C) { +// var v map[string]interface{} +// goyaml.Unmarshal(data, &v) +// c.ResetTimer() +// for i := 0; i < c.N; i++ { +// goyaml.Marshal(&v) +// } +//} diff --git a/src/launchpad.net/goyaml/emitterc.go b/src/launchpad.net/goyaml/emitterc.go new file mode 100644 index 0000000..49c7f46 --- /dev/null +++ b/src/launchpad.net/goyaml/emitterc.go @@ -0,0 +1,1682 @@ +package goyaml + +import ( + "bytes" +) + +// Flush the buffer if needed. +func flush(emitter *yaml_emitter_t) bool { + if emitter.buffer_pos+5 >= len(emitter.buffer) { + return yaml_emitter_flush(emitter) + } + return true +} + +// Put a character to the output buffer. +func put(emitter *yaml_emitter_t, value byte) bool { + if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { + return false + } + emitter.buffer[emitter.buffer_pos] = value + emitter.buffer_pos++ + emitter.column++ + return true +} + +// Put a line break to the output buffer. +func put_break(emitter *yaml_emitter_t) bool { + if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { + return false + } + switch emitter.line_break { + case yaml_CR_BREAK: + emitter.buffer[emitter.buffer_pos] = '\r' + emitter.buffer_pos += 1 + case yaml_LN_BREAK: + emitter.buffer[emitter.buffer_pos] = '\n' + emitter.buffer_pos += 1 + case yaml_CRLN_BREAK: + emitter.buffer[emitter.buffer_pos+0] = '\r' + emitter.buffer[emitter.buffer_pos+1] = '\n' + emitter.buffer_pos += 2 + default: + panic("unknown line break setting") + } + emitter.column = 0 + emitter.line++ + return true +} + +// Copy a character from a string into buffer. +func write(emitter *yaml_emitter_t, s []byte, i *int) bool { + if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { + return false + } + p := emitter.buffer_pos + w := width(s[*i]) + switch w { + case 4: + emitter.buffer[p+3] = s[*i+3] + fallthrough + case 3: + emitter.buffer[p+2] = s[*i+2] + fallthrough + case 2: + emitter.buffer[p+1] = s[*i+1] + fallthrough + case 1: + emitter.buffer[p+0] = s[*i+0] + default: + panic("unknown character width") + } + emitter.column++ + emitter.buffer_pos += w + *i += w + return true +} + +// Write a whole string into buffer. +func write_all(emitter *yaml_emitter_t, s []byte) bool { + for i := 0; i < len(s); { + if !write(emitter, s, &i) { + return false + } + } + return true +} + +// Copy a line break character from a string into buffer. +func write_break(emitter *yaml_emitter_t, s []byte, i *int) bool { + if s[*i] == '\n' { + if !put_break(emitter) { + return false + } + *i++ + } else { + if !write(emitter, s, i) { + return false + } + emitter.column = 0 + emitter.line++ + } + return true +} + +// Set an emitter error and return false. +func yaml_emitter_set_emitter_error(emitter *yaml_emitter_t, problem string) bool { + emitter.error = yaml_EMITTER_ERROR + emitter.problem = problem + return false +} + +// Emit an event. +func yaml_emitter_emit(emitter *yaml_emitter_t, event *yaml_event_t) bool { + emitter.events = append(emitter.events, *event) + for !yaml_emitter_need_more_events(emitter) { + event := &emitter.events[emitter.events_head] + if !yaml_emitter_analyze_event(emitter, event) { + return false + } + if !yaml_emitter_state_machine(emitter, event) { + return false + } + yaml_event_delete(event) + emitter.events_head++ + } + return true +} + +// Check if we need to accumulate more events before emitting. +// +// We accumulate extra +// - 1 event for DOCUMENT-START +// - 2 events for SEQUENCE-START +// - 3 events for MAPPING-START +// +func yaml_emitter_need_more_events(emitter *yaml_emitter_t) bool { + if emitter.events_head == len(emitter.events) { + return true + } + var accumulate int + switch emitter.events[emitter.events_head].typ { + case yaml_DOCUMENT_START_EVENT: + accumulate = 1 + break + case yaml_SEQUENCE_START_EVENT: + accumulate = 2 + break + case yaml_MAPPING_START_EVENT: + accumulate = 3 + break + default: + return false + } + if len(emitter.events)-emitter.events_head > accumulate { + return false + } + var level int + for i := emitter.events_head; i < len(emitter.events); i++ { + switch emitter.events[i].typ { + case yaml_STREAM_START_EVENT, yaml_DOCUMENT_START_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT: + level++ + case yaml_STREAM_END_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_END_EVENT, yaml_MAPPING_END_EVENT: + level-- + } + if level == 0 { + return false + } + } + return true +} + +// Append a directive to the directives stack. +func yaml_emitter_append_tag_directive(emitter *yaml_emitter_t, value *yaml_tag_directive_t, allow_duplicates bool) bool { + for i := 0; i < len(emitter.tag_directives); i++ { + if bytes.Equal(value.handle, emitter.tag_directives[i].handle) { + if allow_duplicates { + return true + } + return yaml_emitter_set_emitter_error(emitter, "duplicate %TAG directive") + } + } + + // [Go] Do we actually need to copy this given garbage collection + // and the lack of deallocating destructors? + tag_copy := yaml_tag_directive_t{ + handle: make([]byte, len(value.handle)), + prefix: make([]byte, len(value.prefix)), + } + copy(tag_copy.handle, value.handle) + copy(tag_copy.prefix, value.prefix) + emitter.tag_directives = append(emitter.tag_directives, tag_copy) + return true +} + +// Increase the indentation level. +func yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow, indentless bool) bool { + emitter.indents = append(emitter.indents, emitter.indent) + if emitter.indent < 0 { + if flow { + emitter.indent = emitter.best_indent + } else { + emitter.indent = 0 + } + } else if !indentless { + emitter.indent += emitter.best_indent + } + return true +} + +// State dispatcher. +func yaml_emitter_state_machine(emitter *yaml_emitter_t, event *yaml_event_t) bool { + switch emitter.state { + default: + case yaml_EMIT_STREAM_START_STATE: + return yaml_emitter_emit_stream_start(emitter, event) + + case yaml_EMIT_FIRST_DOCUMENT_START_STATE: + return yaml_emitter_emit_document_start(emitter, event, true) + + case yaml_EMIT_DOCUMENT_START_STATE: + return yaml_emitter_emit_document_start(emitter, event, false) + + case yaml_EMIT_DOCUMENT_CONTENT_STATE: + return yaml_emitter_emit_document_content(emitter, event) + + case yaml_EMIT_DOCUMENT_END_STATE: + return yaml_emitter_emit_document_end(emitter, event) + + case yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE: + return yaml_emitter_emit_flow_sequence_item(emitter, event, true) + + case yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE: + return yaml_emitter_emit_flow_sequence_item(emitter, event, false) + + case yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE: + return yaml_emitter_emit_flow_mapping_key(emitter, event, true) + + case yaml_EMIT_FLOW_MAPPING_KEY_STATE: + return yaml_emitter_emit_flow_mapping_key(emitter, event, false) + + case yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE: + return yaml_emitter_emit_flow_mapping_value(emitter, event, true) + + case yaml_EMIT_FLOW_MAPPING_VALUE_STATE: + return yaml_emitter_emit_flow_mapping_value(emitter, event, false) + + case yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE: + return yaml_emitter_emit_block_sequence_item(emitter, event, true) + + case yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE: + return yaml_emitter_emit_block_sequence_item(emitter, event, false) + + case yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE: + return yaml_emitter_emit_block_mapping_key(emitter, event, true) + + case yaml_EMIT_BLOCK_MAPPING_KEY_STATE: + return yaml_emitter_emit_block_mapping_key(emitter, event, false) + + case yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE: + return yaml_emitter_emit_block_mapping_value(emitter, event, true) + + case yaml_EMIT_BLOCK_MAPPING_VALUE_STATE: + return yaml_emitter_emit_block_mapping_value(emitter, event, false) + + case yaml_EMIT_END_STATE: + return yaml_emitter_set_emitter_error(emitter, "expected nothing after STREAM-END") + } + panic("invalid emitter state") +} + +// Expect STREAM-START. +func yaml_emitter_emit_stream_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if event.typ != yaml_STREAM_START_EVENT { + return yaml_emitter_set_emitter_error(emitter, "expected STREAM-START") + } + if emitter.encoding == yaml_ANY_ENCODING { + emitter.encoding = event.encoding + if emitter.encoding == yaml_ANY_ENCODING { + emitter.encoding = yaml_UTF8_ENCODING + } + } + if emitter.best_indent < 2 || emitter.best_indent > 9 { + emitter.best_indent = 2 + } + if emitter.best_width >= 0 && emitter.best_width <= emitter.best_indent*2 { + emitter.best_width = 80 + } + if emitter.best_width < 0 { + emitter.best_width = 1<<31 - 1 + } + if emitter.line_break == yaml_ANY_BREAK { + emitter.line_break = yaml_LN_BREAK + } + + emitter.indent = -1 + emitter.line = 0 + emitter.column = 0 + emitter.whitespace = true + emitter.indention = true + + if emitter.encoding != yaml_UTF8_ENCODING { + if !yaml_emitter_write_bom(emitter) { + return false + } + } + emitter.state = yaml_EMIT_FIRST_DOCUMENT_START_STATE + return true +} + +// Expect DOCUMENT-START or STREAM-END. +func yaml_emitter_emit_document_start(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { + + if event.typ == yaml_DOCUMENT_START_EVENT { + + if event.version_directive != nil { + if !yaml_emitter_analyze_version_directive(emitter, event.version_directive) { + return false + } + } + + for i := 0; i < len(event.tag_directives); i++ { + tag_directive := &event.tag_directives[i] + if !yaml_emitter_analyze_tag_directive(emitter, tag_directive) { + return false + } + if !yaml_emitter_append_tag_directive(emitter, tag_directive, false) { + return false + } + } + + for i := 0; i < len(default_tag_directives); i++ { + tag_directive := &default_tag_directives[i] + if !yaml_emitter_append_tag_directive(emitter, tag_directive, true) { + return false + } + } + + implicit := event.implicit + if !first || emitter.canonical { + implicit = false + } + + if emitter.open_ended && (event.version_directive != nil || len(event.tag_directives) > 0) { + if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + + if event.version_directive != nil { + implicit = false + if !yaml_emitter_write_indicator(emitter, []byte("%YAML"), true, false, false) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte("1.1"), true, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + + if len(event.tag_directives) > 0 { + implicit = false + for i := 0; i < len(event.tag_directives); i++ { + tag_directive := &event.tag_directives[i] + if !yaml_emitter_write_indicator(emitter, []byte("%TAG"), true, false, false) { + return false + } + if !yaml_emitter_write_tag_handle(emitter, tag_directive.handle) { + return false + } + if !yaml_emitter_write_tag_content(emitter, tag_directive.prefix, true) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + } + + if yaml_emitter_check_empty_document(emitter) { + implicit = false + } + if !implicit { + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte("---"), true, false, false) { + return false + } + if emitter.canonical { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + } + + emitter.state = yaml_EMIT_DOCUMENT_CONTENT_STATE + return true + } + + if event.typ == yaml_STREAM_END_EVENT { + if emitter.open_ended { + if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_flush(emitter) { + return false + } + emitter.state = yaml_EMIT_END_STATE + return true + } + + return yaml_emitter_set_emitter_error(emitter, "expected DOCUMENT-START or STREAM-END") +} + +// Expect the root node. +func yaml_emitter_emit_document_content(emitter *yaml_emitter_t, event *yaml_event_t) bool { + emitter.states = append(emitter.states, yaml_EMIT_DOCUMENT_END_STATE) + return yaml_emitter_emit_node(emitter, event, true, false, false, false) +} + +// Expect DOCUMENT-END. +func yaml_emitter_emit_document_end(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if event.typ != yaml_DOCUMENT_END_EVENT { + return yaml_emitter_set_emitter_error(emitter, "expected DOCUMENT-END") + } + if !yaml_emitter_write_indent(emitter) { + return false + } + if !event.implicit { + // [Go] Allocate the slice elsewhere. + if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_flush(emitter) { + return false + } + emitter.state = yaml_EMIT_DOCUMENT_START_STATE + emitter.tag_directives = emitter.tag_directives[:0] + return true +} + +// Expect a flow item node. +func yaml_emitter_emit_flow_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { + if first { + if !yaml_emitter_write_indicator(emitter, []byte{'['}, true, true, false) { + return false + } + if !yaml_emitter_increase_indent(emitter, true, false) { + return false + } + emitter.flow_level++ + } + + if event.typ == yaml_SEQUENCE_END_EVENT { + emitter.flow_level-- + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + if emitter.canonical && !first { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{']'}, false, false, false) { + return false + } + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + + return true + } + + if !first { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + + if emitter.canonical || emitter.column > emitter.best_width { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + emitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE) + return yaml_emitter_emit_node(emitter, event, false, true, false, false) +} + +// Expect a flow key node. +func yaml_emitter_emit_flow_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { + if first { + if !yaml_emitter_write_indicator(emitter, []byte{'{'}, true, true, false) { + return false + } + if !yaml_emitter_increase_indent(emitter, true, false) { + return false + } + emitter.flow_level++ + } + + if event.typ == yaml_MAPPING_END_EVENT { + emitter.flow_level-- + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + if emitter.canonical && !first { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{'}'}, false, false, false) { + return false + } + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true + } + + if !first { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + if emitter.canonical || emitter.column > emitter.best_width { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + + if !emitter.canonical && yaml_emitter_check_simple_key(emitter) { + emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, true) + } + if !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, false) { + return false + } + emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_VALUE_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, false) +} + +// Expect a flow value node. +func yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool { + if simple { + if !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) { + return false + } + } else { + if emitter.canonical || emitter.column > emitter.best_width { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, false) { + return false + } + } + emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_KEY_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, false) +} + +// Expect a block item node. +func yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { + if first { + if !yaml_emitter_increase_indent(emitter, false, emitter.mapping_context && !emitter.indention) { + return false + } + } + if event.typ == yaml_SEQUENCE_END_EVENT { + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true + } + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte{'-'}, true, false, true) { + return false + } + emitter.states = append(emitter.states, yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE) + return yaml_emitter_emit_node(emitter, event, false, true, false, false) +} + +// Expect a block key node. +func yaml_emitter_emit_block_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { + if first { + if !yaml_emitter_increase_indent(emitter, false, false) { + return false + } + } + if event.typ == yaml_MAPPING_END_EVENT { + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true + } + if !yaml_emitter_write_indent(emitter) { + return false + } + if yaml_emitter_check_simple_key(emitter) { + emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, true) + } + if !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, true) { + return false + } + emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_VALUE_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, false) +} + +// Expect a block value node. +func yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool { + if simple { + if !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) { + return false + } + } else { + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, true) { + return false + } + } + emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_KEY_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, false) +} + +// Expect a node. +func yaml_emitter_emit_node(emitter *yaml_emitter_t, event *yaml_event_t, + root bool, sequence bool, mapping bool, simple_key bool) bool { + + emitter.root_context = root + emitter.sequence_context = sequence + emitter.mapping_context = mapping + emitter.simple_key_context = simple_key + + switch event.typ { + case yaml_ALIAS_EVENT: + return yaml_emitter_emit_alias(emitter, event) + case yaml_SCALAR_EVENT: + return yaml_emitter_emit_scalar(emitter, event) + case yaml_SEQUENCE_START_EVENT: + return yaml_emitter_emit_sequence_start(emitter, event) + case yaml_MAPPING_START_EVENT: + return yaml_emitter_emit_mapping_start(emitter, event) + default: + return yaml_emitter_set_emitter_error(emitter, + "expected SCALAR, SEQUENCE-START, MAPPING-START, or ALIAS") + } + return false +} + +// Expect ALIAS. +func yaml_emitter_emit_alias(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if !yaml_emitter_process_anchor(emitter) { + return false + } + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true +} + +// Expect SCALAR. +func yaml_emitter_emit_scalar(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if !yaml_emitter_select_scalar_style(emitter, event) { + return false + } + if !yaml_emitter_process_anchor(emitter) { + return false + } + if !yaml_emitter_process_tag(emitter) { + return false + } + if !yaml_emitter_increase_indent(emitter, true, false) { + return false + } + if !yaml_emitter_process_scalar(emitter) { + return false + } + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true +} + +// Expect SEQUENCE-START. +func yaml_emitter_emit_sequence_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if !yaml_emitter_process_anchor(emitter) { + return false + } + if !yaml_emitter_process_tag(emitter) { + return false + } + if emitter.flow_level > 0 || emitter.canonical || event.sequence_style() == yaml_FLOW_SEQUENCE_STYLE || + yaml_emitter_check_empty_sequence(emitter) { + emitter.state = yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE + } else { + emitter.state = yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE + } + return true +} + +// Expect MAPPING-START. +func yaml_emitter_emit_mapping_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if !yaml_emitter_process_anchor(emitter) { + return false + } + if !yaml_emitter_process_tag(emitter) { + return false + } + if emitter.flow_level > 0 || emitter.canonical || event.mapping_style() == yaml_FLOW_MAPPING_STYLE || + yaml_emitter_check_empty_mapping(emitter) { + emitter.state = yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE + } else { + emitter.state = yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE + } + return true +} + +// Check if the document content is an empty scalar. +func yaml_emitter_check_empty_document(emitter *yaml_emitter_t) bool { + return false // [Go] Huh? +} + +// Check if the next events represent an empty sequence. +func yaml_emitter_check_empty_sequence(emitter *yaml_emitter_t) bool { + if len(emitter.events)-emitter.events_head < 2 { + return false + } + return emitter.events[emitter.events_head].typ == yaml_SEQUENCE_START_EVENT && + emitter.events[emitter.events_head+1].typ == yaml_SEQUENCE_END_EVENT +} + +// Check if the next events represent an empty mapping. +func yaml_emitter_check_empty_mapping(emitter *yaml_emitter_t) bool { + if len(emitter.events)-emitter.events_head < 2 { + return false + } + return emitter.events[emitter.events_head].typ == yaml_MAPPING_START_EVENT && + emitter.events[emitter.events_head+1].typ == yaml_MAPPING_END_EVENT +} + +// Check if the next node can be expressed as a simple key. +func yaml_emitter_check_simple_key(emitter *yaml_emitter_t) bool { + length := 0 + switch emitter.events[emitter.events_head].typ { + case yaml_ALIAS_EVENT: + length += len(emitter.anchor_data.anchor) + case yaml_SCALAR_EVENT: + if emitter.scalar_data.multiline { + return false + } + length += len(emitter.anchor_data.anchor) + + len(emitter.tag_data.handle) + + len(emitter.tag_data.suffix) + + len(emitter.scalar_data.value) + case yaml_SEQUENCE_START_EVENT: + if !yaml_emitter_check_empty_sequence(emitter) { + return false + } + length += len(emitter.anchor_data.anchor) + + len(emitter.tag_data.handle) + + len(emitter.tag_data.suffix) + case yaml_MAPPING_START_EVENT: + if !yaml_emitter_check_empty_mapping(emitter) { + return false + } + length += len(emitter.anchor_data.anchor) + + len(emitter.tag_data.handle) + + len(emitter.tag_data.suffix) + default: + return false + } + return length <= 128 +} + +// Determine an acceptable scalar style. +func yaml_emitter_select_scalar_style(emitter *yaml_emitter_t, event *yaml_event_t) bool { + + no_tag := len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 + if no_tag && !event.implicit && !event.quoted_implicit { + return yaml_emitter_set_emitter_error(emitter, "neither tag nor implicit flags are specified") + } + + style := event.scalar_style() + if style == yaml_ANY_SCALAR_STYLE { + style = yaml_PLAIN_SCALAR_STYLE + } + if emitter.canonical { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + if emitter.simple_key_context && emitter.scalar_data.multiline { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + + if style == yaml_PLAIN_SCALAR_STYLE { + if emitter.flow_level > 0 && !emitter.scalar_data.flow_plain_allowed || + emitter.flow_level == 0 && !emitter.scalar_data.block_plain_allowed { + style = yaml_SINGLE_QUOTED_SCALAR_STYLE + } + if len(emitter.scalar_data.value) == 0 && (emitter.flow_level > 0 || emitter.simple_key_context) { + style = yaml_SINGLE_QUOTED_SCALAR_STYLE + } + if no_tag && !event.implicit { + style = yaml_SINGLE_QUOTED_SCALAR_STYLE + } + } + if style == yaml_SINGLE_QUOTED_SCALAR_STYLE { + if !emitter.scalar_data.single_quoted_allowed { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + } + if style == yaml_LITERAL_SCALAR_STYLE || style == yaml_FOLDED_SCALAR_STYLE { + if !emitter.scalar_data.block_allowed || emitter.flow_level > 0 || emitter.simple_key_context { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + } + + if no_tag && !event.quoted_implicit && style != yaml_PLAIN_SCALAR_STYLE { + emitter.tag_data.handle = []byte{'!'} + } + emitter.scalar_data.style = style + return true +} + +// Write an achor. +func yaml_emitter_process_anchor(emitter *yaml_emitter_t) bool { + if emitter.anchor_data.anchor == nil { + return true + } + c := []byte{'&'} + if emitter.anchor_data.alias { + c[0] = '*' + } + if !yaml_emitter_write_indicator(emitter, c, true, false, false) { + return false + } + return yaml_emitter_write_anchor(emitter, emitter.anchor_data.anchor) +} + +// Write a tag. +func yaml_emitter_process_tag(emitter *yaml_emitter_t) bool { + if len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 { + return true + } + if len(emitter.tag_data.handle) > 0 { + if !yaml_emitter_write_tag_handle(emitter, emitter.tag_data.handle) { + return false + } + if len(emitter.tag_data.suffix) > 0 { + if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) { + return false + } + } + } else { + // [Go] Allocate these slices elsewhere. + if !yaml_emitter_write_indicator(emitter, []byte("!<"), true, false, false) { + return false + } + if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte{'>'}, false, false, false) { + return false + } + } + return true +} + +// Write a scalar. +func yaml_emitter_process_scalar(emitter *yaml_emitter_t) bool { + switch emitter.scalar_data.style { + case yaml_PLAIN_SCALAR_STYLE: + return yaml_emitter_write_plain_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) + + case yaml_SINGLE_QUOTED_SCALAR_STYLE: + return yaml_emitter_write_single_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) + + case yaml_DOUBLE_QUOTED_SCALAR_STYLE: + return yaml_emitter_write_double_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) + + case yaml_LITERAL_SCALAR_STYLE: + return yaml_emitter_write_literal_scalar(emitter, emitter.scalar_data.value) + + case yaml_FOLDED_SCALAR_STYLE: + return yaml_emitter_write_folded_scalar(emitter, emitter.scalar_data.value) + } + panic("unknown scalar style") +} + +// Check if a %YAML directive is valid. +func yaml_emitter_analyze_version_directive(emitter *yaml_emitter_t, version_directive *yaml_version_directive_t) bool { + if version_directive.major != 1 || version_directive.minor != 1 { + return yaml_emitter_set_emitter_error(emitter, "incompatible %YAML directive") + } + return true +} + +// Check if a %TAG directive is valid. +func yaml_emitter_analyze_tag_directive(emitter *yaml_emitter_t, tag_directive *yaml_tag_directive_t) bool { + handle := tag_directive.handle + prefix := tag_directive.prefix + if len(handle) == 0 { + return yaml_emitter_set_emitter_error(emitter, "tag handle must not be empty") + } + if handle[0] != '!' { + return yaml_emitter_set_emitter_error(emitter, "tag handle must start with '!'") + } + if handle[len(handle)-1] != '!' { + return yaml_emitter_set_emitter_error(emitter, "tag handle must end with '!'") + } + for i := 1; i < len(handle)-1; i += width(handle[i]) { + if !is_alpha(handle, i) { + return yaml_emitter_set_emitter_error(emitter, "tag handle must contain alphanumerical characters only") + } + } + if len(prefix) == 0 { + return yaml_emitter_set_emitter_error(emitter, "tag prefix must not be empty") + } + return true +} + +// Check if an anchor is valid. +func yaml_emitter_analyze_anchor(emitter *yaml_emitter_t, anchor []byte, alias bool) bool { + if len(anchor) == 0 { + problem := "anchor value must not be empty" + if alias { + problem = "alias value must not be empty" + } + return yaml_emitter_set_emitter_error(emitter, problem) + } + for i := 0; i < len(anchor); i += width(anchor[i]) { + if !is_alpha(anchor, i) { + problem := "anchor value must contain alphanumerical characters only" + if alias { + problem = "alias value must contain alphanumerical characters only" + } + return yaml_emitter_set_emitter_error(emitter, problem) + } + } + emitter.anchor_data.anchor = anchor + emitter.anchor_data.alias = alias + return true +} + +// Check if a tag is valid. +func yaml_emitter_analyze_tag(emitter *yaml_emitter_t, tag []byte) bool { + if len(tag) == 0 { + return yaml_emitter_set_emitter_error(emitter, "tag value must not be empty") + } + for i := 0; i < len(emitter.tag_directives); i++ { + tag_directive := &emitter.tag_directives[i] + if bytes.HasPrefix(tag, tag_directive.prefix) { + emitter.tag_data.handle = tag_directive.handle + emitter.tag_data.suffix = tag[len(tag_directive.prefix):] + } + return true + } + emitter.tag_data.suffix = tag + return true +} + +// Check if a scalar is valid. +func yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool { + var ( + block_indicators = false + flow_indicators = false + line_breaks = false + special_characters = false + + leading_space = false + leading_break = false + trailing_space = false + trailing_break = false + break_space = false + space_break = false + + preceeded_by_whitespace = false + followed_by_whitespace = false + previous_space = false + previous_break = false + ) + + emitter.scalar_data.value = value + + if len(value) == 0 { + emitter.scalar_data.multiline = false + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = true + emitter.scalar_data.single_quoted_allowed = true + emitter.scalar_data.block_allowed = false + return true + } + + if len(value) >= 3 && ((value[0] == '-' && value[1] == '-' && value[2] == '-') || (value[0] == '.' && value[1] == '.' && value[2] == '.')) { + block_indicators = true + flow_indicators = true + } + + preceeded_by_whitespace = true + for i, w := 0, 0; i < len(value); i += w { + w = width(value[0]) + followed_by_whitespace = i+w >= len(value) || is_blank(value, i+w) + + if i == 0 { + switch value[i] { + case '#', ',', '[', ']', '{', '}', '&', '*', '!', '|', '>', '\'', '"', '%', '@', '`': + flow_indicators = true + block_indicators = true + case '?', ':': + flow_indicators = true + if followed_by_whitespace { + block_indicators = true + } + case '-': + if followed_by_whitespace { + flow_indicators = true + block_indicators = true + } + } + } else { + switch value[i] { + case ',', '?', '[', ']', '{', '}': + flow_indicators = true + case ':': + flow_indicators = true + if followed_by_whitespace { + block_indicators = true + } + case '#': + if preceeded_by_whitespace { + flow_indicators = true + block_indicators = true + } + } + } + + if !is_printable(value, i) || !is_ascii(value, i) && !emitter.unicode { + special_characters = true + } + if is_space(value, i) { + if i == 0 { + leading_space = true + } + if i+width(value[i]) == len(value) { + trailing_space = true + } + if previous_break { + break_space = true + } + previous_space = true + previous_break = false + } else if is_break(value, i) { + line_breaks = true + if i == 0 { + leading_break = true + } + if i+width(value[i]) == len(value) { + trailing_break = true + } + if previous_space { + space_break = true + } + previous_space = false + previous_break = true + } else { + previous_space = false + previous_break = false + } + + // [Go]: Why 'z'? Couldn't be the end of the string as that's the loop condition. + preceeded_by_whitespace = is_blankz(value, i) + } + + emitter.scalar_data.multiline = line_breaks + emitter.scalar_data.flow_plain_allowed = true + emitter.scalar_data.block_plain_allowed = true + emitter.scalar_data.single_quoted_allowed = true + emitter.scalar_data.block_allowed = true + + if leading_space || leading_break || trailing_space || trailing_break { + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = false + } + if trailing_space { + emitter.scalar_data.block_allowed = false + } + if break_space { + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = false + emitter.scalar_data.single_quoted_allowed = false + } + if space_break || special_characters { + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = false + emitter.scalar_data.single_quoted_allowed = false + emitter.scalar_data.block_allowed = false + } + if line_breaks { + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = false + } + if flow_indicators { + emitter.scalar_data.flow_plain_allowed = false + } + if block_indicators { + emitter.scalar_data.block_plain_allowed = false + } + return true +} + +// Check if the event data is valid. +func yaml_emitter_analyze_event(emitter *yaml_emitter_t, event *yaml_event_t) bool { + + emitter.anchor_data.anchor = nil + emitter.tag_data.handle = nil + emitter.tag_data.suffix = nil + emitter.scalar_data.value = nil + + switch event.typ { + case yaml_ALIAS_EVENT: + if !yaml_emitter_analyze_anchor(emitter, event.anchor, true) { + return false + } + + case yaml_SCALAR_EVENT: + if len(event.anchor) > 0 { + if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { + return false + } + } + if len(event.tag) > 0 && (emitter.canonical || (!event.implicit && !event.quoted_implicit)) { + if !yaml_emitter_analyze_tag(emitter, event.tag) { + return false + } + } + if !yaml_emitter_analyze_scalar(emitter, event.value) { + return false + } + + case yaml_SEQUENCE_START_EVENT: + if len(event.anchor) > 0 { + if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { + return false + } + } + if len(event.tag) > 0 && (emitter.canonical || !event.implicit) { + if !yaml_emitter_analyze_tag(emitter, event.tag) { + return false + } + } + + case yaml_MAPPING_START_EVENT: + if len(event.anchor) > 0 { + if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { + return false + } + } + if len(event.tag) > 0 && (emitter.canonical || !event.implicit) { + if !yaml_emitter_analyze_tag(emitter, event.tag) { + return false + } + } + } + return true +} + +// Write the BOM character. +func yaml_emitter_write_bom(emitter *yaml_emitter_t) bool { + if !flush(emitter) { + return false + } + pos := emitter.buffer_pos + emitter.buffer[pos+0] = '\xEF' + emitter.buffer[pos+1] = '\xBB' + emitter.buffer[pos+2] = '\xBF' + emitter.buffer_pos += 3 + return true +} + +func yaml_emitter_write_indent(emitter *yaml_emitter_t) bool { + indent := emitter.indent + if indent < 0 { + indent = 0 + } + if !emitter.indention || emitter.column > indent || (emitter.column == indent && !emitter.whitespace) { + if !put_break(emitter) { + return false + } + } + for emitter.column < indent { + if !put(emitter, ' ') { + return false + } + } + emitter.whitespace = true + emitter.indention = true + return true +} + +func yaml_emitter_write_indicator(emitter *yaml_emitter_t, indicator []byte, need_whitespace, is_whitespace, is_indention bool) bool { + if need_whitespace && !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + if !write_all(emitter, indicator) { + return false + } + emitter.whitespace = is_whitespace + emitter.indention = (emitter.indention && is_indention) + emitter.open_ended = false + return true +} + +func yaml_emitter_write_anchor(emitter *yaml_emitter_t, value []byte) bool { + if !write_all(emitter, value) { + return false + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_tag_handle(emitter *yaml_emitter_t, value []byte) bool { + if !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + if !write_all(emitter, value) { + return false + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_tag_content(emitter *yaml_emitter_t, value []byte, need_whitespace bool) bool { + if need_whitespace && !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + for i := 0; i < len(value); { + var must_write bool + switch value[i] { + case ';', '/', '?', ':', '@', '&', '=', '+', '$', ',', '_', '.', '~', '*', '\'', '(', ')', '[', ']': + must_write = true + default: + must_write = is_alpha(value, i) + } + if must_write { + if !write(emitter, value, &i) { + return false + } + } else { + w := width(value[i]) + for k := 0; k < w; k++ { + octet := value[i] + i++ + + c := octet >> 4 + if c < 10 { + c += '0' + } else { + c += 'A' - 10 + } + if !put(emitter, c) { + return false + } + + c = octet & 0x0f + if c < 10 { + c += '0' + } else { + c += 'A' - 10 + } + if !put(emitter, c) { + return false + } + } + } + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_plain_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { + if !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + + spaces := false + breaks := false + for i := 0; i < len(value); { + if is_space(value, i) { + if allow_breaks && !spaces && emitter.column > emitter.best_width && !is_space(value, i+1) { + if !yaml_emitter_write_indent(emitter) { + return false + } + i += width(value[i]) + } else { + if !write(emitter, value, &i) { + return false + } + } + spaces = true + } else if is_break(value, i) { + if !breaks && value[i] == '\n' { + if !put_break(emitter) { + return false + } + } + if !write_break(emitter, value, &i) { + return false + } + emitter.indention = true + breaks = true + } else { + if breaks { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !write(emitter, value, &i) { + return false + } + emitter.indention = false + spaces = false + breaks = false + } + } + + emitter.whitespace = false + emitter.indention = false + if emitter.root_context { + emitter.open_ended = true + } + + return true +} + +func yaml_emitter_write_single_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { + + if !yaml_emitter_write_indicator(emitter, []byte{'\''}, true, false, false) { + return false + } + + spaces := false + breaks := false + for i := 0; i < len(value); { + if is_space(value, i) { + if allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 && !is_space(value, i+1) { + if !yaml_emitter_write_indent(emitter) { + return false + } + i += width(value[i]) + } else { + if !write(emitter, value, &i) { + return false + } + } + spaces = true + } else if is_break(value, i) { + if !breaks && value[i] == '\n' { + if !put_break(emitter) { + return false + } + } + if !write_break(emitter, value, &i) { + return false + } + emitter.indention = true + breaks = true + } else { + if breaks { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if value[i] == '\'' { + if !put(emitter, '\'') { + return false + } + } + if !write(emitter, value, &i) { + return false + } + emitter.indention = false + spaces = false + breaks = false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{'\''}, false, false, false) { + return false + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_double_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { + spaces := false + if !yaml_emitter_write_indicator(emitter, []byte{'"'}, true, false, false) { + return false + } + + for i := 0; i < len(value); { + if !is_printable(value, i) || (!emitter.unicode && !is_ascii(value, i)) || + is_bom(value, i) || is_break(value, i) || + value[i] == '"' || value[i] == '\\' { + + octet := value[i] + + var w int + var v rune + switch { + case octet&0x80 == 0x00: + w, v = 1, rune(octet&0x7F) + case octet&0xE0 == 0xC0: + w, v = 2, rune(octet&0x1F) + case octet&0xF0 == 0xE0: + w, v = 3, rune(octet&0x0F) + case octet&0xF8 == 0xF0: + w, v = 4, rune(octet&0x07) + } + for k := 1; k < w; k++ { + octet = value[i+k] + v = (v << 6) + (rune(octet) & 0x3F) + } + i += w + + if !put(emitter, '\\') { + return false + } + + var ok bool + switch v { + case 0x00: + ok = put(emitter, '0') + case 0x07: + ok = put(emitter, 'a') + case 0x08: + ok = put(emitter, 'b') + case 0x09: + ok = put(emitter, 't') + case 0x0A: + ok = put(emitter, 'n') + case 0x0b: + ok = put(emitter, 'v') + case 0x0c: + ok = put(emitter, 'f') + case 0x0d: + ok = put(emitter, 'r') + case 0x1b: + ok = put(emitter, 'e') + case 0x22: + ok = put(emitter, '"') + case 0x5c: + ok = put(emitter, '\\') + case 0x85: + ok = put(emitter, 'N') + case 0xA0: + ok = put(emitter, '_') + case 0x2028: + ok = put(emitter, 'L') + case 0x2029: + ok = put(emitter, 'P') + default: + if v <= 0xFF { + ok = put(emitter, 'x') + w = 2 + } else if v <= 0xFFFF { + ok = put(emitter, 'u') + w = 4 + } else { + ok = put(emitter, 'U') + w = 8 + } + for k := (w - 1) * 4; ok && k >= 0; k -= 4 { + digit := byte((v >> uint(k)) & 0x0F) + if digit < 10 { + ok = put(emitter, digit+'0') + } else { + ok = put(emitter, digit+'A'-10) + } + } + } + if !ok { + return false + } + spaces = false + } else if is_space(value, i) { + if allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 { + if !yaml_emitter_write_indent(emitter) { + return false + } + if is_space(value, i+1) { + if !put(emitter, '\\') { + return false + } + } + i += width(value[i]) + } else if !write(emitter, value, &i) { + return false + } + spaces = true + } else { + if !write(emitter, value, &i) { + return false + } + spaces = false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{'"'}, false, false, false) { + return false + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_block_scalar_hints(emitter *yaml_emitter_t, value []byte) bool { + if is_space(value, 0) || is_break(value, 0) { + indent_hint := []byte{'0' + byte(emitter.best_indent)} + if !yaml_emitter_write_indicator(emitter, indent_hint, false, false, false) { + return false + } + } + + emitter.open_ended = false + + var chomp_hint [1]byte + if len(value) == 0 { + chomp_hint[0] = '-' + } else { + i := len(value) - 1 + for value[i]&0xC0 == 0x80 { + i-- + } + if !is_break(value, i) { + chomp_hint[0] = '-' + } else if i == 0 { + chomp_hint[0] = '+' + emitter.open_ended = true + } else { + i-- + for value[i]&0xC0 == 0x80 { + i-- + } + if is_break(value, i) { + chomp_hint[0] = '+' + emitter.open_ended = true + } + } + } + if chomp_hint[0] != 0 { + if !yaml_emitter_write_indicator(emitter, chomp_hint[:], false, false, false) { + return false + } + } + return true +} + +func yaml_emitter_write_literal_scalar(emitter *yaml_emitter_t, value []byte) bool { + if !yaml_emitter_write_indicator(emitter, []byte{'|'}, true, false, false) { + return false + } + if !yaml_emitter_write_block_scalar_hints(emitter, value) { + return false + } + if !put_break(emitter) { + return false + } + emitter.indention = true + emitter.whitespace = true + breaks := true + for i := 0; i < len(value); { + if is_break(value, i) { + if !write_break(emitter, value, &i) { + return false + } + emitter.indention = true + breaks = true + } else { + if breaks { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !write(emitter, value, &i) { + return false + } + emitter.indention = false + breaks = false + } + } + + return true +} + +func yaml_emitter_write_folded_scalar(emitter *yaml_emitter_t, value []byte) bool { + if !yaml_emitter_write_indicator(emitter, []byte{'>'}, true, false, false) { + return false + } + if !yaml_emitter_write_block_scalar_hints(emitter, value) { + return false + } + + if !put_break(emitter) { + return false + } + emitter.indention = true + emitter.whitespace = true + + breaks := true + leading_spaces := true + for i := 0; i < len(value); { + if is_break(value, i) { + if !breaks && !leading_spaces && value[i] == '\n' { + k := 0 + for is_break(value, k) { + k += width(value[k]) + } + if !is_blankz(value, k) { + if !put_break(emitter) { + return false + } + } + } + if !write_break(emitter, value, &i) { + return false + } + emitter.indention = true + breaks = true + } else { + if breaks { + if !yaml_emitter_write_indent(emitter) { + return false + } + leading_spaces = is_blank(value, i) + } + if !breaks && is_space(value, i) && !is_space(value, i+1) && emitter.column > emitter.best_width { + if !yaml_emitter_write_indent(emitter) { + return false + } + i += width(value[i]) + } else { + if !write(emitter, value, &i) { + return false + } + } + emitter.indention = false + breaks = false + } + } + return true +} diff --git a/src/launchpad.net/goyaml/encode.go b/src/launchpad.net/goyaml/encode.go new file mode 100644 index 0000000..b228a10 --- /dev/null +++ b/src/launchpad.net/goyaml/encode.go @@ -0,0 +1,221 @@ +package goyaml + +import ( + "reflect" + "sort" + "strconv" +) + +type encoder struct { + emitter yaml_emitter_t + event yaml_event_t + out []byte + flow bool +} + +func newEncoder() (e *encoder) { + e = &encoder{} + e.must(yaml_emitter_initialize(&e.emitter)) + yaml_emitter_set_output_string(&e.emitter, &e.out) + e.must(yaml_stream_start_event_initialize(&e.event, yaml_UTF8_ENCODING)) + e.emit() + e.must(yaml_document_start_event_initialize(&e.event, nil, nil, true)) + e.emit() + return e +} + +func (e *encoder) finish() { + e.must(yaml_document_end_event_initialize(&e.event, true)) + e.emit() + e.emitter.open_ended = false + e.must(yaml_stream_end_event_initialize(&e.event)) + e.emit() +} + +func (e *encoder) destroy() { + yaml_emitter_delete(&e.emitter) +} + +func (e *encoder) emit() { + // This will internally delete the e.event value. + if !yaml_emitter_emit(&e.emitter, &e.event) && e.event.typ != yaml_DOCUMENT_END_EVENT && e.event.typ != yaml_STREAM_END_EVENT { + e.must(false) + } +} + +func (e *encoder) must(ok bool) { + if !ok { + msg := e.emitter.problem + if msg == "" { + msg = "Unknown problem generating YAML content" + } + panic(msg) + } +} + +func (e *encoder) marshal(tag string, in reflect.Value) { + var value interface{} + if getter, ok := in.Interface().(Getter); ok { + tag, value = getter.GetYAML() + if value == nil { + e.nilv() + return + } + in = reflect.ValueOf(value) + } + switch in.Kind() { + case reflect.Interface: + if in.IsNil() { + e.nilv() + } else { + e.marshal(tag, in.Elem()) + } + case reflect.Map: + e.mapv(tag, in) + case reflect.Ptr: + if in.IsNil() { + e.nilv() + } else { + e.marshal(tag, in.Elem()) + } + case reflect.Struct: + e.structv(tag, in) + case reflect.Slice: + e.slicev(tag, in) + case reflect.String: + e.stringv(tag, in) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + e.intv(tag, in) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + e.uintv(tag, in) + case reflect.Float32, reflect.Float64: + e.floatv(tag, in) + case reflect.Bool: + e.boolv(tag, in) + default: + panic("Can't marshal type yet: " + in.Type().String()) + } +} + +func (e *encoder) mapv(tag string, in reflect.Value) { + e.mappingv(tag, func() { + keys := keyList(in.MapKeys()) + sort.Sort(keys) + for _, k := range keys { + e.marshal("", k) + e.marshal("", in.MapIndex(k)) + } + }) +} + +func (e *encoder) structv(tag string, in reflect.Value) { + sinfo, err := getStructInfo(in.Type()) + if err != nil { + panic(err) + } + e.mappingv(tag, func() { + for _, info := range sinfo.FieldsList { + var value reflect.Value + if info.Inline == nil { + value = in.Field(info.Num) + } else { + value = in.FieldByIndex(info.Inline) + } + if info.OmitEmpty && isZero(value) { + continue + } + e.marshal("", reflect.ValueOf(info.Key)) + e.flow = info.Flow + e.marshal("", value) + } + }) +} + +func (e *encoder) mappingv(tag string, f func()) { + implicit := tag == "" + style := yaml_BLOCK_MAPPING_STYLE + if e.flow { + e.flow = false + style = yaml_FLOW_MAPPING_STYLE + } + e.must(yaml_mapping_start_event_initialize(&e.event, nil, []byte(tag), implicit, style)) + e.emit() + f() + e.must(yaml_mapping_end_event_initialize(&e.event)) + e.emit() +} + +func (e *encoder) slicev(tag string, in reflect.Value) { + implicit := tag == "" + style := yaml_BLOCK_SEQUENCE_STYLE + if e.flow { + e.flow = false + style = yaml_FLOW_SEQUENCE_STYLE + } + e.must(yaml_sequence_start_event_initialize(&e.event, nil, []byte(tag), implicit, style)) + e.emit() + n := in.Len() + for i := 0; i < n; i++ { + e.marshal("", in.Index(i)) + } + e.must(yaml_sequence_end_event_initialize(&e.event)) + e.emit() +} + +func (e *encoder) stringv(tag string, in reflect.Value) { + var style yaml_scalar_style_t + s := in.String() + if rtag, _ := resolve("", s); rtag != "!!str" { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } else { + style = yaml_PLAIN_SCALAR_STYLE + } + e.emitScalar(s, "", tag, style) +} + +func (e *encoder) boolv(tag string, in reflect.Value) { + var s string + if in.Bool() { + s = "true" + } else { + s = "false" + } + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) +} + +func (e *encoder) intv(tag string, in reflect.Value) { + s := strconv.FormatInt(in.Int(), 10) + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) +} + +func (e *encoder) uintv(tag string, in reflect.Value) { + s := strconv.FormatUint(in.Uint(), 10) + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) +} + +func (e *encoder) floatv(tag string, in reflect.Value) { + // FIXME: Handle 64 bits here. + s := strconv.FormatFloat(float64(in.Float()), 'g', -1, 32) + switch s { + case "+Inf": + s = ".inf" + case "-Inf": + s = "-.inf" + case "NaN": + s = ".nan" + } + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) +} + +func (e *encoder) nilv() { + e.emitScalar("null", "", "", yaml_PLAIN_SCALAR_STYLE) +} + +func (e *encoder) emitScalar(value, anchor, tag string, style yaml_scalar_style_t) { + implicit := tag == "" + if !implicit { + style = yaml_PLAIN_SCALAR_STYLE + } + e.must(yaml_scalar_event_initialize(&e.event, []byte(anchor), []byte(tag), []byte(value), implicit, implicit, style)) + e.emit() +} diff --git a/src/launchpad.net/goyaml/encode_test.go b/src/launchpad.net/goyaml/encode_test.go new file mode 100644 index 0000000..2887466 --- /dev/null +++ b/src/launchpad.net/goyaml/encode_test.go @@ -0,0 +1,379 @@ +package goyaml_test + +import ( + "fmt" + . "launchpad.net/gocheck" + "launchpad.net/goyaml" + "math" + "strconv" + "strings" +) + +var marshalIntTest = 123 + +var marshalTests = []struct { + value interface{} + data string +}{ + { + &struct{}{}, + "{}\n", + }, { + map[string]string{"v": "hi"}, + "v: hi\n", + }, { + map[string]interface{}{"v": "hi"}, + "v: hi\n", + }, { + map[string]string{"v": "true"}, + "v: \"true\"\n", + }, { + map[string]string{"v": "false"}, + "v: \"false\"\n", + }, { + map[string]interface{}{"v": true}, + "v: true\n", + }, { + map[string]interface{}{"v": false}, + "v: false\n", + }, { + map[string]interface{}{"v": 10}, + "v: 10\n", + }, { + map[string]interface{}{"v": -10}, + "v: -10\n", + }, { + map[string]uint{"v": 42}, + "v: 42\n", + }, { + map[string]interface{}{"v": int64(4294967296)}, + "v: 4294967296\n", + }, { + map[string]int64{"v": int64(4294967296)}, + "v: 4294967296\n", + }, { + map[string]uint64{"v": 4294967296}, + "v: 4294967296\n", + }, { + map[string]interface{}{"v": "10"}, + "v: \"10\"\n", + }, { + map[string]interface{}{"v": 0.1}, + "v: 0.1\n", + }, { + map[string]interface{}{"v": float64(0.1)}, + "v: 0.1\n", + }, { + map[string]interface{}{"v": -0.1}, + "v: -0.1\n", + }, { + map[string]interface{}{"v": math.Inf(+1)}, + "v: .inf\n", + }, { + map[string]interface{}{"v": math.Inf(-1)}, + "v: -.inf\n", + }, { + map[string]interface{}{"v": math.NaN()}, + "v: .nan\n", + }, { + map[string]interface{}{"v": nil}, + "v: null\n", + }, { + map[string]interface{}{"v": ""}, + "v: \"\"\n", + }, { + map[string][]string{"v": []string{"A", "B"}}, + "v:\n- A\n- B\n", + }, { + map[string][]string{"v": []string{"A", "B\nC"}}, + "v:\n- A\n- 'B\n\n C'\n", + }, { + map[string][]interface{}{"v": []interface{}{"A", 1, map[string][]int{"B": []int{2, 3}}}}, + "v:\n- A\n- 1\n- B:\n - 2\n - 3\n", + }, { + map[string]interface{}{"a": map[interface{}]interface{}{"b": "c"}}, + "a:\n b: c\n", + }, { + map[string]interface{}{"a": "-"}, + "a: '-'\n", + }, + + // Simple values. + { + &marshalIntTest, + "123\n", + }, + + // Structures + { + &struct{ Hello string }{"world"}, + "hello: world\n", + }, { + &struct { + A struct { + B string + } + }{struct{ B string }{"c"}}, + "a:\n b: c\n", + }, { + &struct { + A *struct { + B string + } + }{&struct{ B string }{"c"}}, + "a:\n b: c\n", + }, { + &struct { + A *struct { + B string + } + }{}, + "a: null\n", + }, { + &struct{ A int }{1}, + "a: 1\n", + }, { + &struct{ A []int }{[]int{1, 2}}, + "a:\n- 1\n- 2\n", + }, { + &struct { + B int "a" + }{1}, + "a: 1\n", + }, { + &struct{ A bool }{true}, + "a: true\n", + }, + + // Conditional flag + { + &struct { + A int "a,omitempty" + B int "b,omitempty" + }{1, 0}, + "a: 1\n", + }, { + &struct { + A int "a,omitempty" + B int "b,omitempty" + }{0, 0}, + "{}\n", + }, { + &struct { + A *struct{ X int } "a,omitempty" + B int "b,omitempty" + }{nil, 0}, + "{}\n", + }, + + // Flow flag + { + &struct { + A []int "a,flow" + }{[]int{1, 2}}, + "a: [1, 2]\n", + }, { + &struct { + A map[string]string "a,flow" + }{map[string]string{"b": "c", "d": "e"}}, + "a: {b: c, d: e}\n", + }, { + &struct { + A struct { + B, D string + } "a,flow" + }{struct{ B, D string }{"c", "e"}}, + "a: {b: c, d: e}\n", + }, + + // Unexported field + { + &struct { + u int + A int + }{0, 1}, + "a: 1\n", + }, + + // Ignored field + { + &struct { + A int + B int "-" + }{1, 2}, + "a: 1\n", + }, + + // Struct inlining + { + &struct { + A int + C inlineB `yaml:",inline"` + }{1, inlineB{2, inlineC{3}}}, + "a: 1\nb: 2\nc: 3\n", + }, +} + +func (s *S) TestMarshal(c *C) { + for _, item := range marshalTests { + data, err := goyaml.Marshal(item.value) + c.Assert(err, IsNil) + c.Assert(string(data), Equals, item.data) + } +} + +var marshalErrorTests = []struct { + value interface{} + error string +}{ + { + &struct { + B int + inlineB ",inline" + }{1, inlineB{2, inlineC{3}}}, + `Duplicated key 'b' in struct struct \{ B int; .*`, + }, +} + +func (s *S) TestMarshalErrors(c *C) { + for _, item := range marshalErrorTests { + _, err := goyaml.Marshal(item.value) + c.Assert(err, ErrorMatches, item.error) + } +} + +var marshalTaggedIfaceTest interface{} = &struct{ A string }{"B"} + +var getterTests = []struct { + data, tag string + value interface{} +}{ + {"_:\n hi: there\n", "", map[interface{}]interface{}{"hi": "there"}}, + {"_:\n- 1\n- A\n", "", []interface{}{1, "A"}}, + {"_: 10\n", "", 10}, + {"_: null\n", "", nil}, + {"_: !foo BAR!\n", "!foo", "BAR!"}, + {"_: !foo 1\n", "!foo", "1"}, + {"_: !foo '\"1\"'\n", "!foo", "\"1\""}, + {"_: !foo 1.1\n", "!foo", 1.1}, + {"_: !foo 1\n", "!foo", 1}, + {"_: !foo 1\n", "!foo", uint(1)}, + {"_: !foo true\n", "!foo", true}, + {"_: !foo\n- A\n- B\n", "!foo", []string{"A", "B"}}, + {"_: !foo\n A: B\n", "!foo", map[string]string{"A": "B"}}, + {"_: !foo\n a: B\n", "!foo", &marshalTaggedIfaceTest}, +} + +func (s *S) TestMarshalTypeCache(c *C) { + var data []byte + var err error + func() { + type T struct{ A int } + data, err = goyaml.Marshal(&T{}) + c.Assert(err, IsNil) + }() + func() { + type T struct{ B int } + data, err = goyaml.Marshal(&T{}) + c.Assert(err, IsNil) + }() + c.Assert(string(data), Equals, "b: 0\n") +} + +type typeWithGetter struct { + tag string + value interface{} +} + +func (o typeWithGetter) GetYAML() (tag string, value interface{}) { + return o.tag, o.value +} + +type typeWithGetterField struct { + Field typeWithGetter "_" +} + +func (s *S) TestMashalWithGetter(c *C) { + for _, item := range getterTests { + obj := &typeWithGetterField{} + obj.Field.tag = item.tag + obj.Field.value = item.value + data, err := goyaml.Marshal(obj) + c.Assert(err, IsNil) + c.Assert(string(data), Equals, string(item.data)) + } +} + +func (s *S) TestUnmarshalWholeDocumentWithGetter(c *C) { + obj := &typeWithGetter{} + obj.tag = "" + obj.value = map[string]string{"hello": "world!"} + data, err := goyaml.Marshal(obj) + c.Assert(err, IsNil) + c.Assert(string(data), Equals, "hello: world!\n") +} + +func (s *S) TestSortedOutput(c *C) { + order := []interface{}{ + false, + true, + 1, + uint(1), + 1.0, + 1.1, + 1.2, + 2, + uint(2), + 2.0, + 2.1, + "", + ".1", + ".2", + ".a", + "1", + "2", + "a!10", + "a/2", + "a/10", + "a~10", + "ab/1", + "b/1", + "b/01", + "b/2", + "b/02", + "b/3", + "b/03", + "b1", + "b01", + "b3", + "c2.10", + "c10.2", + "d1", + "d12", + "d12a", + } + m := make(map[interface{}]int) + for _, k := range order { + m[k] = 1 + } + data, err := goyaml.Marshal(m) + c.Assert(err, IsNil) + out := "\n" + string(data) + last := 0 + for i, k := range order { + repr := fmt.Sprint(k) + if s, ok := k.(string); ok { + if _, err = strconv.ParseFloat(repr, 32); s == "" || err == nil { + repr = `"` + repr + `"` + } + } + index := strings.Index(out, "\n"+repr+":") + if index == -1 { + c.Fatalf("%#v is not in the output: %#v", k, out) + } + if index < last { + c.Fatalf("%#v was generated before %#v: %q", k, order[i-1], out) + } + last = index + } +} diff --git a/src/launchpad.net/goyaml/goyaml.go b/src/launchpad.net/goyaml/goyaml.go new file mode 100644 index 0000000..dbc633e --- /dev/null +++ b/src/launchpad.net/goyaml/goyaml.go @@ -0,0 +1,300 @@ +// Package goyaml implements YAML support for the Go language. +package goyaml + +import ( + "errors" + "fmt" + "reflect" + "runtime" + "strings" + "sync" +) + +func handleErr(err *error) { + if r := recover(); r != nil { + if _, ok := r.(runtime.Error); ok { + panic(r) + } else if _, ok := r.(*reflect.ValueError); ok { + panic(r) + } else if _, ok := r.(externalPanic); ok { + panic(r) + } else if s, ok := r.(string); ok { + *err = errors.New("YAML error: " + s) + } else if e, ok := r.(error); ok { + *err = e + } else { + panic(r) + } + } +} + +// Objects implementing the goyaml.Setter interface will receive the YAML +// tag and value via the SetYAML method during unmarshaling, rather than +// being implicitly assigned by the goyaml machinery. If setting the value +// works, the method should return true. If it returns false, the given +// value will be omitted from maps and slices. +type Setter interface { + SetYAML(tag string, value interface{}) bool +} + +// Objects implementing the goyaml.Getter interface will get the GetYAML() +// method called when goyaml is requested to marshal the given value, and +// the result of this method will be marshaled in place of the actual object. +type Getter interface { + GetYAML() (tag string, value interface{}) +} + +// Unmarshal decodes the first document found within the in byte slice +// and assigns decoded values into the object pointed by out. +// +// Maps, pointers to structs and ints, etc, may all be used as out values. +// If an internal pointer within a struct is not initialized, goyaml +// will initialize it if necessary for unmarshalling the provided data, +// but the struct provided as out must not be a nil pointer. +// +// The type of the decoded values and the type of out will be considered, +// and Unmarshal() will do the best possible job to unmarshal values +// appropriately. It is NOT considered an error, though, to skip values +// because they are not available in the decoded YAML, or if they are not +// compatible with the out value. To ensure something was properly +// unmarshaled use a map or compare against the previous value for the +// field (usually the zero value). +// +// Struct fields are only unmarshalled if they are exported (have an +// upper case first letter), and will be unmarshalled using the field +// name lowercased by default. When custom field names are desired, the +// tag value may be used to tweak the name. Everything before the first +// comma in the field tag will be used as the name. The values following +// the comma are used to tweak the marshalling process (see Marshal). +// Conflicting names result in a runtime error. +// +// For example: +// +// type T struct { +// F int `yaml:"a,omitempty"` +// B int +// } +// var T t +// goyaml.Unmarshal([]byte("a: 1\nb: 2"), &t) +// +// See the documentation of Marshal for the format of tags and a list of +// supported tag options. +// +func Unmarshal(in []byte, out interface{}) (err error) { + defer handleErr(&err) + d := newDecoder() + p := newParser(in) + defer p.destroy() + node := p.parse() + if node != nil { + d.unmarshal(node, reflect.ValueOf(out)) + } + return nil +} + +// Marshal serializes the value provided into a YAML document. The structure +// of the generated document will reflect the structure of the value itself. +// Maps, pointers to structs and ints, etc, may all be used as the in value. +// +// In the case of struct values, only exported fields will be serialized. +// The lowercased field name is used as the key for each exported field, +// but this behavior may be changed using the respective field tag. +// The tag may also contain flags to tweak the marshalling behavior for +// the field. Conflicting names result in a runtime error. The tag format +// accepted is: +// +// `(...) yaml:"[][,[,]]" (...)` +// +// The following flags are currently supported: +// +// omitempty Only include the field if it's not set to the zero +// value for the type or to empty slices or maps. +// Does not apply to zero valued structs. +// +// flow Marshal using a flow style (useful for structs, +// sequences and maps. +// +// inline Inline the struct it's applied to, so its fields +// are processed as if they were part of the outer +// struct. +// +// In addition, if the key is "-", the field is ignored. +// +// For example: +// +// type T struct { +// F int "a,omitempty" +// B int +// } +// goyaml.Marshal(&T{B: 2}) // Returns "b: 2\n" +// goyaml.Marshal(&T{F: 1}} // Returns "a: 1\nb: 0\n" +// +func Marshal(in interface{}) (out []byte, err error) { + defer handleErr(&err) + e := newEncoder() + defer e.destroy() + e.marshal("", reflect.ValueOf(in)) + e.finish() + out = e.out + return +} + +// -------------------------------------------------------------------------- +// Maintain a mapping of keys to structure field indexes + +// The code in this section was copied from gobson. + +// structInfo holds details for the serialization of fields of +// a given struct. +type structInfo struct { + FieldsMap map[string]fieldInfo + FieldsList []fieldInfo + + // InlineMap is the number of the field in the struct that + // contains an ,inline map, or -1 if there's none. + InlineMap int +} + +type fieldInfo struct { + Key string + Num int + OmitEmpty bool + Flow bool + + // Inline holds the field index if the field is part of an inlined struct. + Inline []int +} + +var structMap = make(map[reflect.Type]*structInfo) +var fieldMapMutex sync.RWMutex + +type externalPanic string + +func (e externalPanic) String() string { + return string(e) +} + +func getStructInfo(st reflect.Type) (*structInfo, error) { + fieldMapMutex.RLock() + sinfo, found := structMap[st] + fieldMapMutex.RUnlock() + if found { + return sinfo, nil + } + + n := st.NumField() + fieldsMap := make(map[string]fieldInfo) + fieldsList := make([]fieldInfo, 0, n) + inlineMap := -1 + for i := 0; i != n; i++ { + field := st.Field(i) + if field.PkgPath != "" { + continue // Private field + } + + info := fieldInfo{Num: i} + + tag := field.Tag.Get("yaml") + if tag == "" && strings.Index(string(field.Tag), ":") < 0 { + tag = string(field.Tag) + } + if tag == "-" { + continue + } + + inline := false + fields := strings.Split(tag, ",") + if len(fields) > 1 { + for _, flag := range fields[1:] { + switch flag { + case "omitempty": + info.OmitEmpty = true + case "flow": + info.Flow = true + case "inline": + inline = true + default: + msg := fmt.Sprintf("Unsupported flag %q in tag %q of type %s", flag, tag, st) + panic(externalPanic(msg)) + } + } + tag = fields[0] + } + + if inline { + switch field.Type.Kind() { + //case reflect.Map: + // if inlineMap >= 0 { + // return nil, errors.New("Multiple ,inline maps in struct " + st.String()) + // } + // if field.Type.Key() != reflect.TypeOf("") { + // return nil, errors.New("Option ,inline needs a map with string keys in struct " + st.String()) + // } + // inlineMap = info.Num + case reflect.Struct: + sinfo, err := getStructInfo(field.Type) + if err != nil { + return nil, err + } + for _, finfo := range sinfo.FieldsList { + if _, found := fieldsMap[finfo.Key]; found { + msg := "Duplicated key '" + finfo.Key + "' in struct " + st.String() + return nil, errors.New(msg) + } + if finfo.Inline == nil { + finfo.Inline = []int{i, finfo.Num} + } else { + finfo.Inline = append([]int{i}, finfo.Inline...) + } + fieldsMap[finfo.Key] = finfo + fieldsList = append(fieldsList, finfo) + } + default: + //panic("Option ,inline needs a struct value or map field") + panic("Option ,inline needs a struct value field") + } + continue + } + + if tag != "" { + info.Key = tag + } else { + info.Key = strings.ToLower(field.Name) + } + + if _, found = fieldsMap[info.Key]; found { + msg := "Duplicated key '" + info.Key + "' in struct " + st.String() + return nil, errors.New(msg) + } + + fieldsList = append(fieldsList, info) + fieldsMap[info.Key] = info + } + + sinfo = &structInfo{fieldsMap, fieldsList, inlineMap} + + fieldMapMutex.Lock() + structMap[st] = sinfo + fieldMapMutex.Unlock() + return sinfo, nil +} + +func isZero(v reflect.Value) bool { + switch v.Kind() { + case reflect.String: + return len(v.String()) == 0 + case reflect.Interface, reflect.Ptr: + return v.IsNil() + case reflect.Slice: + return v.Len() == 0 + case reflect.Map: + return v.Len() == 0 + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return v.Int() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return v.Uint() == 0 + case reflect.Bool: + return !v.Bool() + } + return false +} diff --git a/src/launchpad.net/goyaml/parserc.go b/src/launchpad.net/goyaml/parserc.go new file mode 100644 index 0000000..0fdfa4e --- /dev/null +++ b/src/launchpad.net/goyaml/parserc.go @@ -0,0 +1,1096 @@ +package goyaml + +import ( + "bytes" +) + +// The parser implements the following grammar: +// +// stream ::= STREAM-START implicit_document? explicit_document* STREAM-END +// implicit_document ::= block_node DOCUMENT-END* +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// block_node_or_indentless_sequence ::= +// ALIAS +// | properties (block_content | indentless_block_sequence)? +// | block_content +// | indentless_block_sequence +// block_node ::= ALIAS +// | properties block_content? +// | block_content +// flow_node ::= ALIAS +// | properties flow_content? +// | flow_content +// properties ::= TAG ANCHOR? | ANCHOR TAG? +// block_content ::= block_collection | flow_collection | SCALAR +// flow_content ::= flow_collection | SCALAR +// block_collection ::= block_sequence | block_mapping +// flow_collection ::= flow_sequence | flow_mapping +// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END +// indentless_sequence ::= (BLOCK-ENTRY block_node?)+ +// block_mapping ::= BLOCK-MAPPING_START +// ((KEY block_node_or_indentless_sequence?)? +// (VALUE block_node_or_indentless_sequence?)?)* +// BLOCK-END +// flow_sequence ::= FLOW-SEQUENCE-START +// (flow_sequence_entry FLOW-ENTRY)* +// flow_sequence_entry? +// FLOW-SEQUENCE-END +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// flow_mapping ::= FLOW-MAPPING-START +// (flow_mapping_entry FLOW-ENTRY)* +// flow_mapping_entry? +// FLOW-MAPPING-END +// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? + +// Peek the next token in the token queue. +func peek_token(parser *yaml_parser_t) *yaml_token_t { + if parser.token_available || yaml_parser_fetch_more_tokens(parser) { + return &parser.tokens[parser.tokens_head] + } + return nil +} + +// Remove the next token from the queue (must be called after peek_token). +func skip_token(parser *yaml_parser_t) { + parser.token_available = false + parser.tokens_parsed++ + parser.stream_end_produced = parser.tokens[parser.tokens_head].typ == yaml_STREAM_END_TOKEN + parser.tokens_head++ +} + +// Get the next event. +func yaml_parser_parse(parser *yaml_parser_t, event *yaml_event_t) bool { + // Erase the event object. + *event = yaml_event_t{} + + // No events after the end of the stream or error. + if parser.stream_end_produced || parser.error != yaml_NO_ERROR || parser.state == yaml_PARSE_END_STATE { + return true + } + + // Generate the next event. + return yaml_parser_state_machine(parser, event) +} + +// Set parser error. +func yaml_parser_set_parser_error(parser *yaml_parser_t, problem string, problem_mark yaml_mark_t) bool { + parser.error = yaml_PARSER_ERROR + parser.problem = problem + parser.problem_mark = problem_mark + return false +} + +func yaml_parser_set_parser_error_context(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string, problem_mark yaml_mark_t) bool { + parser.error = yaml_PARSER_ERROR + parser.context = context + parser.context_mark = context_mark + parser.problem = problem + parser.problem_mark = problem_mark + return false +} + +// State dispatcher. +func yaml_parser_state_machine(parser *yaml_parser_t, event *yaml_event_t) bool { + //trace("yaml_parser_state_machine", "state:", parser.state.String()) + + switch parser.state { + case yaml_PARSE_STREAM_START_STATE: + return yaml_parser_parse_stream_start(parser, event) + + case yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE: + return yaml_parser_parse_document_start(parser, event, true) + + case yaml_PARSE_DOCUMENT_START_STATE: + return yaml_parser_parse_document_start(parser, event, false) + + case yaml_PARSE_DOCUMENT_CONTENT_STATE: + return yaml_parser_parse_document_content(parser, event) + + case yaml_PARSE_DOCUMENT_END_STATE: + return yaml_parser_parse_document_end(parser, event) + + case yaml_PARSE_BLOCK_NODE_STATE: + return yaml_parser_parse_node(parser, event, true, false) + + case yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE: + return yaml_parser_parse_node(parser, event, true, true) + + case yaml_PARSE_FLOW_NODE_STATE: + return yaml_parser_parse_node(parser, event, false, false) + + case yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE: + return yaml_parser_parse_block_sequence_entry(parser, event, true) + + case yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE: + return yaml_parser_parse_block_sequence_entry(parser, event, false) + + case yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE: + return yaml_parser_parse_indentless_sequence_entry(parser, event) + + case yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE: + return yaml_parser_parse_block_mapping_key(parser, event, true) + + case yaml_PARSE_BLOCK_MAPPING_KEY_STATE: + return yaml_parser_parse_block_mapping_key(parser, event, false) + + case yaml_PARSE_BLOCK_MAPPING_VALUE_STATE: + return yaml_parser_parse_block_mapping_value(parser, event) + + case yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE: + return yaml_parser_parse_flow_sequence_entry(parser, event, true) + + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE: + return yaml_parser_parse_flow_sequence_entry(parser, event, false) + + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE: + return yaml_parser_parse_flow_sequence_entry_mapping_key(parser, event) + + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE: + return yaml_parser_parse_flow_sequence_entry_mapping_value(parser, event) + + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE: + return yaml_parser_parse_flow_sequence_entry_mapping_end(parser, event) + + case yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE: + return yaml_parser_parse_flow_mapping_key(parser, event, true) + + case yaml_PARSE_FLOW_MAPPING_KEY_STATE: + return yaml_parser_parse_flow_mapping_key(parser, event, false) + + case yaml_PARSE_FLOW_MAPPING_VALUE_STATE: + return yaml_parser_parse_flow_mapping_value(parser, event, false) + + case yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE: + return yaml_parser_parse_flow_mapping_value(parser, event, true) + + default: + panic("invalid parser state") + } + return false +} + +// Parse the production: +// stream ::= STREAM-START implicit_document? explicit_document* STREAM-END +// ************ +func yaml_parser_parse_stream_start(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_STREAM_START_TOKEN { + return yaml_parser_set_parser_error(parser, "did not find expected ", token.start_mark) + } + parser.state = yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE + *event = yaml_event_t{ + typ: yaml_STREAM_START_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + encoding: token.encoding, + } + skip_token(parser) + return true +} + +// Parse the productions: +// implicit_document ::= block_node DOCUMENT-END* +// * +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// ************************* +func yaml_parser_parse_document_start(parser *yaml_parser_t, event *yaml_event_t, implicit bool) bool { + + token := peek_token(parser) + if token == nil { + return false + } + + // Parse extra document end indicators. + if !implicit { + for token.typ == yaml_DOCUMENT_END_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } + } + + if implicit && token.typ != yaml_VERSION_DIRECTIVE_TOKEN && + token.typ != yaml_TAG_DIRECTIVE_TOKEN && + token.typ != yaml_DOCUMENT_START_TOKEN && + token.typ != yaml_STREAM_END_TOKEN { + // Parse an implicit document. + if !yaml_parser_process_directives(parser, nil, nil) { + return false + } + parser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE) + parser.state = yaml_PARSE_BLOCK_NODE_STATE + + *event = yaml_event_t{ + typ: yaml_DOCUMENT_START_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + + } else if token.typ != yaml_STREAM_END_TOKEN { + // Parse an explicit document. + var version_directive *yaml_version_directive_t + var tag_directives []yaml_tag_directive_t + start_mark := token.start_mark + if !yaml_parser_process_directives(parser, &version_directive, &tag_directives) { + return false + } + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_DOCUMENT_START_TOKEN { + yaml_parser_set_parser_error(parser, + "did not find expected ", token.start_mark) + return false + } + parser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE) + parser.state = yaml_PARSE_DOCUMENT_CONTENT_STATE + end_mark := token.end_mark + + *event = yaml_event_t{ + typ: yaml_DOCUMENT_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + version_directive: version_directive, + tag_directives: tag_directives, + implicit: false, + } + skip_token(parser) + + } else { + // Parse the stream end. + parser.state = yaml_PARSE_END_STATE + *event = yaml_event_t{ + typ: yaml_STREAM_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + skip_token(parser) + } + + return true +} + +// Parse the productions: +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// *********** +// +func yaml_parser_parse_document_content(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_VERSION_DIRECTIVE_TOKEN || + token.typ == yaml_TAG_DIRECTIVE_TOKEN || + token.typ == yaml_DOCUMENT_START_TOKEN || + token.typ == yaml_DOCUMENT_END_TOKEN || + token.typ == yaml_STREAM_END_TOKEN { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + return yaml_parser_process_empty_scalar(parser, event, + token.start_mark) + } + return yaml_parser_parse_node(parser, event, true, false) +} + +// Parse the productions: +// implicit_document ::= block_node DOCUMENT-END* +// ************* +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// +func yaml_parser_parse_document_end(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + + start_mark := token.start_mark + end_mark := token.start_mark + + implicit := true + if token.typ == yaml_DOCUMENT_END_TOKEN { + end_mark = token.end_mark + skip_token(parser) + implicit = false + } + + parser.tag_directives = parser.tag_directives[:0] + + parser.state = yaml_PARSE_DOCUMENT_START_STATE + *event = yaml_event_t{ + typ: yaml_DOCUMENT_END_EVENT, + start_mark: start_mark, + end_mark: end_mark, + implicit: implicit, + } + return true +} + +// Parse the productions: +// block_node_or_indentless_sequence ::= +// ALIAS +// ***** +// | properties (block_content | indentless_block_sequence)? +// ********** * +// | block_content | indentless_block_sequence +// * +// block_node ::= ALIAS +// ***** +// | properties block_content? +// ********** * +// | block_content +// * +// flow_node ::= ALIAS +// ***** +// | properties flow_content? +// ********** * +// | flow_content +// * +// properties ::= TAG ANCHOR? | ANCHOR TAG? +// ************************* +// block_content ::= block_collection | flow_collection | SCALAR +// ****** +// flow_content ::= flow_collection | SCALAR +// ****** +func yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, indentless_sequence bool) bool { + //defer trace("yaml_parser_parse_node", "block:", block, "indentless_sequence:", indentless_sequence)() + + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ == yaml_ALIAS_TOKEN { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + *event = yaml_event_t{ + typ: yaml_ALIAS_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + anchor: token.value, + } + skip_token(parser) + return true + } + + start_mark := token.start_mark + end_mark := token.start_mark + + var tag_token bool + var tag_handle, tag_suffix, anchor []byte + var tag_mark yaml_mark_t + if token.typ == yaml_ANCHOR_TOKEN { + anchor = token.value + start_mark = token.start_mark + end_mark = token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_TAG_TOKEN { + tag_token = true + tag_handle = token.value + tag_suffix = token.suffix + tag_mark = token.start_mark + end_mark = token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } + } else if token.typ == yaml_TAG_TOKEN { + tag_token = true + tag_handle = token.value + tag_suffix = token.suffix + start_mark = token.start_mark + tag_mark = token.start_mark + end_mark = token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_ANCHOR_TOKEN { + anchor = token.value + end_mark = token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } + } + + var tag []byte + if tag_token { + if len(tag_handle) == 0 { + tag = tag_suffix + tag_suffix = nil + } else { + for i := range parser.tag_directives { + if bytes.Equal(parser.tag_directives[i].handle, tag_handle) { + tag = append([]byte(nil), parser.tag_directives[i].prefix...) + tag = append(tag, tag_suffix...) + break + } + } + if len(tag) == 0 { + yaml_parser_set_parser_error_context(parser, + "while parsing a node", start_mark, + "found undefined tag handle", tag_mark) + return false + } + } + } + + implicit := len(tag) == 0 + if indentless_sequence && token.typ == yaml_BLOCK_ENTRY_TOKEN { + end_mark = token.end_mark + parser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE + *event = yaml_event_t{ + typ: yaml_SEQUENCE_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE), + } + return true + } + if token.typ == yaml_SCALAR_TOKEN { + var plain_implicit, quoted_implicit bool + end_mark = token.end_mark + if (len(tag) == 0 && token.style == yaml_PLAIN_SCALAR_STYLE) || (len(tag) == 1 && tag[0] == '!') { + plain_implicit = true + } else if len(tag) == 0 { + quoted_implicit = true + } + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + + *event = yaml_event_t{ + typ: yaml_SCALAR_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + value: token.value, + implicit: plain_implicit, + quoted_implicit: quoted_implicit, + style: yaml_style_t(token.style), + } + skip_token(parser) + return true + } + if token.typ == yaml_FLOW_SEQUENCE_START_TOKEN { + // [Go] Some of the events below can be merged as they differ only on style. + end_mark = token.end_mark + parser.state = yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE + *event = yaml_event_t{ + typ: yaml_SEQUENCE_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_FLOW_SEQUENCE_STYLE), + } + return true + } + if token.typ == yaml_FLOW_MAPPING_START_TOKEN { + end_mark = token.end_mark + parser.state = yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE + *event = yaml_event_t{ + typ: yaml_MAPPING_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_FLOW_MAPPING_STYLE), + } + return true + } + if block && token.typ == yaml_BLOCK_SEQUENCE_START_TOKEN { + end_mark = token.end_mark + parser.state = yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE + *event = yaml_event_t{ + typ: yaml_SEQUENCE_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE), + } + return true + } + if block && token.typ == yaml_BLOCK_MAPPING_START_TOKEN { + end_mark = token.end_mark + parser.state = yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE + *event = yaml_event_t{ + typ: yaml_MAPPING_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_BLOCK_MAPPING_STYLE), + } + return true + } + if len(anchor) > 0 || len(tag) > 0 { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + + *event = yaml_event_t{ + typ: yaml_SCALAR_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + quoted_implicit: false, + style: yaml_style_t(yaml_PLAIN_SCALAR_STYLE), + } + return true + } + + context := "while parsing a flow node" + if block { + context = "while parsing a block node" + } + yaml_parser_set_parser_error_context(parser, context, start_mark, + "did not find expected node content", token.start_mark) + return false +} + +// Parse the productions: +// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END +// ******************** *********** * ********* +// +func yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { + if first { + token := peek_token(parser) + parser.marks = append(parser.marks, token.start_mark) + skip_token(parser) + } + + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ == yaml_BLOCK_ENTRY_TOKEN { + mark := token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_BLOCK_ENTRY_TOKEN && token.typ != yaml_BLOCK_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE) + return yaml_parser_parse_node(parser, event, true, false) + } else { + parser.state = yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) + } + } + if token.typ == yaml_BLOCK_END_TOKEN { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + + *event = yaml_event_t{ + typ: yaml_SEQUENCE_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + + skip_token(parser) + return true + } + + context_mark := parser.marks[len(parser.marks)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + return yaml_parser_set_parser_error_context(parser, + "while parsing a block collection", context_mark, + "did not find expected '-' indicator", token.start_mark) +} + +// Parse the productions: +// indentless_sequence ::= (BLOCK-ENTRY block_node?)+ +// *********** * +func yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ == yaml_BLOCK_ENTRY_TOKEN { + mark := token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_BLOCK_ENTRY_TOKEN && + token.typ != yaml_KEY_TOKEN && + token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_BLOCK_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE) + return yaml_parser_parse_node(parser, event, true, false) + } + parser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) + } + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + + *event = yaml_event_t{ + typ: yaml_SEQUENCE_END_EVENT, + start_mark: token.start_mark, + end_mark: token.start_mark, // [Go] Shouldn't this be token.end_mark? + } + return true +} + +// Parse the productions: +// block_mapping ::= BLOCK-MAPPING_START +// ******************* +// ((KEY block_node_or_indentless_sequence?)? +// *** * +// (VALUE block_node_or_indentless_sequence?)?)* +// +// BLOCK-END +// ********* +// +func yaml_parser_parse_block_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { + if first { + token := peek_token(parser) + parser.marks = append(parser.marks, token.start_mark) + skip_token(parser) + } + + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ == yaml_KEY_TOKEN { + mark := token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_KEY_TOKEN && + token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_BLOCK_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_VALUE_STATE) + return yaml_parser_parse_node(parser, event, true, true) + } else { + parser.state = yaml_PARSE_BLOCK_MAPPING_VALUE_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) + } + } else if token.typ == yaml_BLOCK_END_TOKEN { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + *event = yaml_event_t{ + typ: yaml_MAPPING_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + skip_token(parser) + return true + } + + context_mark := parser.marks[len(parser.marks)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + return yaml_parser_set_parser_error_context(parser, + "while parsing a block mapping", context_mark, + "did not find expected key", token.start_mark) +} + +// Parse the productions: +// block_mapping ::= BLOCK-MAPPING_START +// +// ((KEY block_node_or_indentless_sequence?)? +// +// (VALUE block_node_or_indentless_sequence?)?)* +// ***** * +// BLOCK-END +// +// +func yaml_parser_parse_block_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_VALUE_TOKEN { + mark := token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_KEY_TOKEN && + token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_BLOCK_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_KEY_STATE) + return yaml_parser_parse_node(parser, event, true, true) + } + parser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) + } + parser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) +} + +// Parse the productions: +// flow_sequence ::= FLOW-SEQUENCE-START +// ******************* +// (flow_sequence_entry FLOW-ENTRY)* +// * ********** +// flow_sequence_entry? +// * +// FLOW-SEQUENCE-END +// ***************** +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// * +// +func yaml_parser_parse_flow_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { + if first { + token := peek_token(parser) + parser.marks = append(parser.marks, token.start_mark) + skip_token(parser) + } + token := peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { + if !first { + if token.typ == yaml_FLOW_ENTRY_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } else { + context_mark := parser.marks[len(parser.marks)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + return yaml_parser_set_parser_error_context(parser, + "while parsing a flow sequence", context_mark, + "did not find expected ',' or ']'", token.start_mark) + } + } + + if token.typ == yaml_KEY_TOKEN { + parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE + *event = yaml_event_t{ + typ: yaml_MAPPING_START_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + implicit: true, + style: yaml_style_t(yaml_FLOW_MAPPING_STYLE), + } + skip_token(parser) + return true + } else if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + } + + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + + *event = yaml_event_t{ + typ: yaml_SEQUENCE_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + + skip_token(parser) + return true +} + +// +// Parse the productions: +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// *** * +// +func yaml_parser_parse_flow_sequence_entry_mapping_key(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_FLOW_ENTRY_TOKEN && + token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + mark := token.end_mark + skip_token(parser) + parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) +} + +// Parse the productions: +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// ***** * +// +func yaml_parser_parse_flow_sequence_entry_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_VALUE_TOKEN { + skip_token(parser) + token := peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + } + parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) +} + +// Parse the productions: +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// * +// +func yaml_parser_parse_flow_sequence_entry_mapping_end(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE + *event = yaml_event_t{ + typ: yaml_MAPPING_END_EVENT, + start_mark: token.start_mark, + end_mark: token.start_mark, // [Go] Shouldn't this be end_mark? + } + return true +} + +// Parse the productions: +// flow_mapping ::= FLOW-MAPPING-START +// ****************** +// (flow_mapping_entry FLOW-ENTRY)* +// * ********** +// flow_mapping_entry? +// ****************** +// FLOW-MAPPING-END +// **************** +// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// * *** * +// +func yaml_parser_parse_flow_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { + if first { + token := peek_token(parser) + parser.marks = append(parser.marks, token.start_mark) + skip_token(parser) + } + + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ != yaml_FLOW_MAPPING_END_TOKEN { + if !first { + if token.typ == yaml_FLOW_ENTRY_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } else { + context_mark := parser.marks[len(parser.marks)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + return yaml_parser_set_parser_error_context(parser, + "while parsing a flow mapping", context_mark, + "did not find expected ',' or '}'", token.start_mark) + } + } + + if token.typ == yaml_KEY_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_FLOW_ENTRY_TOKEN && + token.typ != yaml_FLOW_MAPPING_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_VALUE_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } else { + parser.state = yaml_PARSE_FLOW_MAPPING_VALUE_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) + } + } else if token.typ != yaml_FLOW_MAPPING_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + } + + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + *event = yaml_event_t{ + typ: yaml_MAPPING_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + skip_token(parser) + return true +} + +// Parse the productions: +// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// * ***** * +// +func yaml_parser_parse_flow_mapping_value(parser *yaml_parser_t, event *yaml_event_t, empty bool) bool { + token := peek_token(parser) + if token == nil { + return false + } + if empty { + parser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) + } + if token.typ == yaml_VALUE_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_MAPPING_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_KEY_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + } + parser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) +} + +// Generate an empty scalar event. +func yaml_parser_process_empty_scalar(parser *yaml_parser_t, event *yaml_event_t, mark yaml_mark_t) bool { + *event = yaml_event_t{ + typ: yaml_SCALAR_EVENT, + start_mark: mark, + end_mark: mark, + value: nil, // Empty + implicit: true, + style: yaml_style_t(yaml_PLAIN_SCALAR_STYLE), + } + return true +} + +var default_tag_directives = []yaml_tag_directive_t{ + {[]byte("!"), []byte("!")}, + {[]byte("!!"), []byte("tag:yaml.org,2002:")}, +} + +// Parse directives. +func yaml_parser_process_directives(parser *yaml_parser_t, + version_directive_ref **yaml_version_directive_t, + tag_directives_ref *[]yaml_tag_directive_t) bool { + + var version_directive *yaml_version_directive_t + var tag_directives []yaml_tag_directive_t + + token := peek_token(parser) + if token == nil { + return false + } + + for token.typ == yaml_VERSION_DIRECTIVE_TOKEN || token.typ == yaml_TAG_DIRECTIVE_TOKEN { + if token.typ == yaml_VERSION_DIRECTIVE_TOKEN { + if version_directive != nil { + yaml_parser_set_parser_error(parser, + "found duplicate %YAML directive", token.start_mark) + return false + } + if token.major != 1 || token.minor != 1 { + yaml_parser_set_parser_error(parser, + "found incompatible YAML document", token.start_mark) + return false + } + version_directive = &yaml_version_directive_t{ + major: token.major, + minor: token.minor, + } + } else if token.typ == yaml_TAG_DIRECTIVE_TOKEN { + value := yaml_tag_directive_t{ + handle: token.value, + prefix: token.prefix, + } + if !yaml_parser_append_tag_directive(parser, value, false, token.start_mark) { + return false + } + tag_directives = append(tag_directives, value) + } + + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } + + for i := range default_tag_directives { + if !yaml_parser_append_tag_directive(parser, default_tag_directives[i], true, token.start_mark) { + return false + } + } + + if version_directive_ref != nil { + *version_directive_ref = version_directive + } + if tag_directives_ref != nil { + *tag_directives_ref = tag_directives + } + return true +} + +// Append a tag directive to the directives stack. +func yaml_parser_append_tag_directive(parser *yaml_parser_t, value yaml_tag_directive_t, allow_duplicates bool, mark yaml_mark_t) bool { + for i := range parser.tag_directives { + if bytes.Equal(value.handle, parser.tag_directives[i].handle) { + if allow_duplicates { + return true + } + return yaml_parser_set_parser_error(parser, "found duplicate %TAG directive", mark) + } + } + + // [Go] I suspect the copy is unnecessary. This was likely done + // because there was no way to track ownership of the data. + value_copy := yaml_tag_directive_t{ + handle: make([]byte, len(value.handle)), + prefix: make([]byte, len(value.prefix)), + } + copy(value_copy.handle, value.handle) + copy(value_copy.prefix, value.prefix) + parser.tag_directives = append(parser.tag_directives, value_copy) + return true +} diff --git a/src/launchpad.net/goyaml/readerc.go b/src/launchpad.net/goyaml/readerc.go new file mode 100644 index 0000000..c732935 --- /dev/null +++ b/src/launchpad.net/goyaml/readerc.go @@ -0,0 +1,391 @@ +package goyaml + +import ( + "io" +) + +// Set the reader error and return 0. +func yaml_parser_set_reader_error(parser *yaml_parser_t, problem string, offset int, value int) bool { + parser.error = yaml_READER_ERROR + parser.problem = problem + parser.problem_offset = offset + parser.problem_value = value + return false +} + +// Byte order marks. +const ( + bom_UTF8 = "\xef\xbb\xbf" + bom_UTF16LE = "\xff\xfe" + bom_UTF16BE = "\xfe\xff" +) + +// Determine the input stream encoding by checking the BOM symbol. If no BOM is +// found, the UTF-8 encoding is assumed. Return 1 on success, 0 on failure. +func yaml_parser_determine_encoding(parser *yaml_parser_t) bool { + // Ensure that we had enough bytes in the raw buffer. + for !parser.eof && len(parser.raw_buffer)-parser.raw_buffer_pos < 3 { + if !yaml_parser_update_raw_buffer(parser) { + return false + } + } + + // Determine the encoding. + buf := parser.raw_buffer + pos := parser.raw_buffer_pos + avail := len(buf) - pos + if avail >= 2 && buf[pos] == bom_UTF16LE[0] && buf[pos+1] == bom_UTF16LE[1] { + parser.encoding = yaml_UTF16LE_ENCODING + parser.raw_buffer_pos += 2 + parser.offset += 2 + } else if avail >= 2 && buf[pos] == bom_UTF16BE[0] && buf[pos+1] == bom_UTF16BE[1] { + parser.encoding = yaml_UTF16BE_ENCODING + parser.raw_buffer_pos += 2 + parser.offset += 2 + } else if avail >= 3 && buf[pos] == bom_UTF8[0] && buf[pos+1] == bom_UTF8[1] && buf[pos+2] == bom_UTF8[2] { + parser.encoding = yaml_UTF8_ENCODING + parser.raw_buffer_pos += 3 + parser.offset += 3 + } else { + parser.encoding = yaml_UTF8_ENCODING + } + return true +} + +// Update the raw buffer. +func yaml_parser_update_raw_buffer(parser *yaml_parser_t) bool { + size_read := 0 + + // Return if the raw buffer is full. + if parser.raw_buffer_pos == 0 && len(parser.raw_buffer) == cap(parser.raw_buffer) { + return true + } + + // Return on EOF. + if parser.eof { + return true + } + + // Move the remaining bytes in the raw buffer to the beginning. + if parser.raw_buffer_pos > 0 && parser.raw_buffer_pos < len(parser.raw_buffer) { + copy(parser.raw_buffer, parser.raw_buffer[parser.raw_buffer_pos:]) + } + parser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)-parser.raw_buffer_pos] + parser.raw_buffer_pos = 0 + + // Call the read handler to fill the buffer. + size_read, err := parser.read_handler(parser, parser.raw_buffer[len(parser.raw_buffer):cap(parser.raw_buffer)]) + parser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)+size_read] + if err == io.EOF { + parser.eof = true + } else if err != nil { + return yaml_parser_set_reader_error(parser, "input error: "+err.Error(), parser.offset, -1) + } + return true +} + +// Ensure that the buffer contains at least `length` characters. +// Return true on success, false on failure. +// +// The length is supposed to be significantly less that the buffer size. +func yaml_parser_update_buffer(parser *yaml_parser_t, length int) bool { + if parser.read_handler == nil { + panic("read handler must be set") + } + + // If the EOF flag is set and the raw buffer is empty, do nothing. + if parser.eof && parser.raw_buffer_pos == len(parser.raw_buffer) { + return true + } + + // Return if the buffer contains enough characters. + if parser.unread >= length { + return true + } + + // Determine the input encoding if it is not known yet. + if parser.encoding == yaml_ANY_ENCODING { + if !yaml_parser_determine_encoding(parser) { + return false + } + } + + // Move the unread characters to the beginning of the buffer. + buffer_len := len(parser.buffer) + if parser.buffer_pos > 0 && parser.buffer_pos < buffer_len { + copy(parser.buffer, parser.buffer[parser.buffer_pos:]) + buffer_len -= parser.buffer_pos + parser.buffer_pos = 0 + } else if parser.buffer_pos == buffer_len { + buffer_len = 0 + parser.buffer_pos = 0 + } + + // Open the whole buffer for writing, and cut it before returning. + parser.buffer = parser.buffer[:cap(parser.buffer)] + + // Fill the buffer until it has enough characters. + first := true + for parser.unread < length { + + // Fill the raw buffer if necessary. + if !first || parser.raw_buffer_pos == len(parser.raw_buffer) { + if !yaml_parser_update_raw_buffer(parser) { + parser.buffer = parser.buffer[:buffer_len] + return false + } + } + first = false + + // Decode the raw buffer. + inner: + for parser.raw_buffer_pos != len(parser.raw_buffer) { + var value rune + var width int + + raw_unread := len(parser.raw_buffer) - parser.raw_buffer_pos + + // Decode the next character. + switch parser.encoding { + case yaml_UTF8_ENCODING: + // Decode a UTF-8 character. Check RFC 3629 + // (http://www.ietf.org/rfc/rfc3629.txt) for more details. + // + // The following table (taken from the RFC) is used for + // decoding. + // + // Char. number range | UTF-8 octet sequence + // (hexadecimal) | (binary) + // --------------------+------------------------------------ + // 0000 0000-0000 007F | 0xxxxxxx + // 0000 0080-0000 07FF | 110xxxxx 10xxxxxx + // 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx + // 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + // + // Additionally, the characters in the range 0xD800-0xDFFF + // are prohibited as they are reserved for use with UTF-16 + // surrogate pairs. + + // Determine the length of the UTF-8 sequence. + octet := parser.raw_buffer[parser.raw_buffer_pos] + switch { + case octet&0x80 == 0x00: + width = 1 + case octet&0xE0 == 0xC0: + width = 2 + case octet&0xF0 == 0xE0: + width = 3 + case octet&0xF8 == 0xF0: + width = 4 + default: + // The leading octet is invalid. + return yaml_parser_set_reader_error(parser, + "invalid leading UTF-8 octet", + parser.offset, int(octet)) + } + + // Check if the raw buffer contains an incomplete character. + if width > raw_unread { + if parser.eof { + return yaml_parser_set_reader_error(parser, + "incomplete UTF-8 octet sequence", + parser.offset, -1) + } + break inner + } + + // Decode the leading octet. + switch { + case octet&0x80 == 0x00: + value = rune(octet & 0x7F) + case octet&0xE0 == 0xC0: + value = rune(octet & 0x1F) + case octet&0xF0 == 0xE0: + value = rune(octet & 0x0F) + case octet&0xF8 == 0xF0: + value = rune(octet & 0x07) + default: + value = 0 + } + + // Check and decode the trailing octets. + for k := 1; k < width; k++ { + octet = parser.raw_buffer[parser.raw_buffer_pos+k] + + // Check if the octet is valid. + if (octet & 0xC0) != 0x80 { + return yaml_parser_set_reader_error(parser, + "invalid trailing UTF-8 octet", + parser.offset+k, int(octet)) + } + + // Decode the octet. + value = (value << 6) + rune(octet&0x3F) + } + + // Check the length of the sequence against the value. + switch { + case width == 1: + case width == 2 && value >= 0x80: + case width == 3 && value >= 0x800: + case width == 4 && value >= 0x10000: + default: + return yaml_parser_set_reader_error(parser, + "invalid length of a UTF-8 sequence", + parser.offset, -1) + } + + // Check the range of the value. + if value >= 0xD800 && value <= 0xDFFF || value > 0x10FFFF { + return yaml_parser_set_reader_error(parser, + "invalid Unicode character", + parser.offset, int(value)) + } + + case yaml_UTF16LE_ENCODING, yaml_UTF16BE_ENCODING: + var low, high int + if parser.encoding == yaml_UTF16LE_ENCODING { + low, high = 0, 1 + } else { + high, low = 1, 0 + } + + // The UTF-16 encoding is not as simple as one might + // naively think. Check RFC 2781 + // (http://www.ietf.org/rfc/rfc2781.txt). + // + // Normally, two subsequent bytes describe a Unicode + // character. However a special technique (called a + // surrogate pair) is used for specifying character + // values larger than 0xFFFF. + // + // A surrogate pair consists of two pseudo-characters: + // high surrogate area (0xD800-0xDBFF) + // low surrogate area (0xDC00-0xDFFF) + // + // The following formulas are used for decoding + // and encoding characters using surrogate pairs: + // + // U = U' + 0x10000 (0x01 00 00 <= U <= 0x10 FF FF) + // U' = yyyyyyyyyyxxxxxxxxxx (0 <= U' <= 0x0F FF FF) + // W1 = 110110yyyyyyyyyy + // W2 = 110111xxxxxxxxxx + // + // where U is the character value, W1 is the high surrogate + // area, W2 is the low surrogate area. + + // Check for incomplete UTF-16 character. + if raw_unread < 2 { + if parser.eof { + return yaml_parser_set_reader_error(parser, + "incomplete UTF-16 character", + parser.offset, -1) + } + break inner + } + + // Get the character. + value = rune(parser.raw_buffer[parser.raw_buffer_pos+low]) + + (rune(parser.raw_buffer[parser.raw_buffer_pos+high]) << 8) + + // Check for unexpected low surrogate area. + if value&0xFC00 == 0xDC00 { + return yaml_parser_set_reader_error(parser, + "unexpected low surrogate area", + parser.offset, int(value)) + } + + // Check for a high surrogate area. + if value&0xFC00 == 0xD800 { + width = 4 + + // Check for incomplete surrogate pair. + if raw_unread < 4 { + if parser.eof { + return yaml_parser_set_reader_error(parser, + "incomplete UTF-16 surrogate pair", + parser.offset, -1) + } + break inner + } + + // Get the next character. + value2 := rune(parser.raw_buffer[parser.raw_buffer_pos+low+2]) + + (rune(parser.raw_buffer[parser.raw_buffer_pos+high+2]) << 8) + + // Check for a low surrogate area. + if value2&0xFC00 != 0xDC00 { + return yaml_parser_set_reader_error(parser, + "expected low surrogate area", + parser.offset+2, int(value2)) + } + + // Generate the value of the surrogate pair. + value = 0x10000 + ((value & 0x3FF) << 10) + (value2 & 0x3FF) + } else { + width = 2 + } + + default: + panic("impossible") + } + + // Check if the character is in the allowed range: + // #x9 | #xA | #xD | [#x20-#x7E] (8 bit) + // | #x85 | [#xA0-#xD7FF] | [#xE000-#xFFFD] (16 bit) + // | [#x10000-#x10FFFF] (32 bit) + switch { + case value == 0x09: + case value == 0x0A: + case value == 0x0D: + case value >= 0x20 && value <= 0x7E: + case value == 0x85: + case value >= 0xA0 && value <= 0xD7FF: + case value >= 0xE000 && value <= 0xFFFD: + case value >= 0x10000 && value <= 0x10FFFF: + default: + return yaml_parser_set_reader_error(parser, + "control characters are not allowed", + parser.offset, int(value)) + } + + // Move the raw pointers. + parser.raw_buffer_pos += width + parser.offset += width + + // Finally put the character into the buffer. + if value <= 0x7F { + // 0000 0000-0000 007F . 0xxxxxxx + parser.buffer[buffer_len+0] = byte(value) + } else if value <= 0x7FF { + // 0000 0080-0000 07FF . 110xxxxx 10xxxxxx + parser.buffer[buffer_len+0] = byte(0xC0 + (value >> 6)) + parser.buffer[buffer_len+1] = byte(0x80 + (value & 0x3F)) + } else if value <= 0xFFFF { + // 0000 0800-0000 FFFF . 1110xxxx 10xxxxxx 10xxxxxx + parser.buffer[buffer_len+0] = byte(0xE0 + (value >> 12)) + parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 6) & 0x3F)) + parser.buffer[buffer_len+2] = byte(0x80 + (value & 0x3F)) + } else { + // 0001 0000-0010 FFFF . 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + parser.buffer[buffer_len+0] = byte(0xF0 + (value >> 18)) + parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 12) & 0x3F)) + parser.buffer[buffer_len+2] = byte(0x80 + ((value >> 6) & 0x3F)) + parser.buffer[buffer_len+3] = byte(0x80 + (value & 0x3F)) + } + buffer_len += width + + parser.unread++ + } + + // On EOF, put NUL into the buffer and return. + if parser.eof { + parser.buffer[buffer_len] = 0 + buffer_len++ + parser.unread++ + break + } + } + parser.buffer = parser.buffer[:buffer_len] + return true +} diff --git a/src/launchpad.net/goyaml/resolve.go b/src/launchpad.net/goyaml/resolve.go new file mode 100644 index 0000000..a31a533 --- /dev/null +++ b/src/launchpad.net/goyaml/resolve.go @@ -0,0 +1,155 @@ +package goyaml + +import ( + "math" + "strconv" + "strings" +) + +// TODO: merge, timestamps, base 60 floats, omap. + +type resolveMapItem struct { + value interface{} + tag string +} + +var resolveTable = make([]byte, 256) +var resolveMap = make(map[string]resolveMapItem) + +func init() { + t := resolveTable + t[int('+')] = 'S' // Sign + t[int('-')] = 'S' + for _, c := range "0123456789" { + t[int(c)] = 'D' // Digit + } + for _, c := range "yYnNtTfFoO~" { + t[int(c)] = 'M' // In map + } + t[int('.')] = '.' // Float (potentially in map) + t[int('<')] = '<' // Merge + + var resolveMapList = []struct { + v interface{} + tag string + l []string + }{ + {true, "!!bool", []string{"y", "Y", "yes", "Yes", "YES"}}, + {true, "!!bool", []string{"true", "True", "TRUE"}}, + {true, "!!bool", []string{"on", "On", "ON"}}, + {false, "!!bool", []string{"n", "N", "no", "No", "NO"}}, + {false, "!!bool", []string{"false", "False", "FALSE"}}, + {false, "!!bool", []string{"off", "Off", "OFF"}}, + {nil, "!!null", []string{"~", "null", "Null", "NULL"}}, + {math.NaN(), "!!float", []string{".nan", ".NaN", ".NAN"}}, + {math.Inf(+1), "!!float", []string{".inf", ".Inf", ".INF"}}, + {math.Inf(+1), "!!float", []string{"+.inf", "+.Inf", "+.INF"}}, + {math.Inf(-1), "!!float", []string{"-.inf", "-.Inf", "-.INF"}}, + } + + m := resolveMap + for _, item := range resolveMapList { + for _, s := range item.l { + m[s] = resolveMapItem{item.v, item.tag} + } + } +} + +const longTagPrefix = "tag:yaml.org,2002:" + +func shortTag(tag string) string { + if strings.HasPrefix(tag, longTagPrefix) { + return "!!" + tag[len(longTagPrefix):] + } + return tag +} + +func resolvableTag(tag string) bool { + switch tag { + case "", "!!str", "!!bool", "!!int", "!!float", "!!null": + return true + } + return false +} + +func resolve(tag string, in string) (rtag string, out interface{}) { + tag = shortTag(tag) + if !resolvableTag(tag) { + return tag, in + } + + defer func() { + if tag != "" && tag != rtag { + panic("Can't decode " + rtag + " '" + in + "' as a " + tag) + } + }() + + if in == "" { + return "!!null", nil + } + + c := resolveTable[in[0]] + if c == 0 { + // It's a string for sure. Nothing to do. + return "!!str", in + } + + // Handle things we can lookup in a map. + if item, ok := resolveMap[in]; ok { + return item.tag, item.value + } + + switch c { + case 'M': + // We've already checked the map above. + + case '.': + // Not in the map, so maybe a normal float. + floatv, err := strconv.ParseFloat(in, 64) + if err == nil { + return "!!float", floatv + } + // XXX Handle base 60 floats here (WTF!) + + case 'D', 'S': + // Int, float, or timestamp. + for i := 0; i != len(in); i++ { + if in[i] == '_' { + in = strings.Replace(in, "_", "", -1) + break + } + } + intv, err := strconv.ParseInt(in, 0, 64) + if err == nil { + if intv == int64(int(intv)) { + return "!!int", int(intv) + } else { + return "!!int", intv + } + } + floatv, err := strconv.ParseFloat(in, 64) + if err == nil { + return "!!float", floatv + } + if strings.HasPrefix(in, "0b") { + intv, err := strconv.ParseInt(in[2:], 2, 64) + if err == nil { + return "!!int", int(intv) + } + } else if strings.HasPrefix(in, "-0b") { + intv, err := strconv.ParseInt(in[3:], 2, 64) + if err == nil { + return "!!int", -int(intv) + } + } + // XXX Handle timestamps here. + + case '<': + // XXX Handle merge (<<) here. + + default: + panic("resolveTable item not yet handled: " + + string([]byte{c}) + " (with " + in + ")") + } + return "!!str", in +} diff --git a/src/launchpad.net/goyaml/scannerc.go b/src/launchpad.net/goyaml/scannerc.go new file mode 100644 index 0000000..943a597 --- /dev/null +++ b/src/launchpad.net/goyaml/scannerc.go @@ -0,0 +1,2710 @@ +package goyaml + +import ( + "bytes" + "fmt" +) + +// Introduction +// ************ +// +// The following notes assume that you are familiar with the YAML specification +// (http://yaml.org/spec/cvs/current.html). We mostly follow it, although in +// some cases we are less restrictive that it requires. +// +// The process of transforming a YAML stream into a sequence of events is +// divided on two steps: Scanning and Parsing. +// +// The Scanner transforms the input stream into a sequence of tokens, while the +// parser transform the sequence of tokens produced by the Scanner into a +// sequence of parsing events. +// +// The Scanner is rather clever and complicated. The Parser, on the contrary, +// is a straightforward implementation of a recursive-descendant parser (or, +// LL(1) parser, as it is usually called). +// +// Actually there are two issues of Scanning that might be called "clever", the +// rest is quite straightforward. The issues are "block collection start" and +// "simple keys". Both issues are explained below in details. +// +// Here the Scanning step is explained and implemented. We start with the list +// of all the tokens produced by the Scanner together with short descriptions. +// +// Now, tokens: +// +// STREAM-START(encoding) # The stream start. +// STREAM-END # The stream end. +// VERSION-DIRECTIVE(major,minor) # The '%YAML' directive. +// TAG-DIRECTIVE(handle,prefix) # The '%TAG' directive. +// DOCUMENT-START # '---' +// DOCUMENT-END # '...' +// BLOCK-SEQUENCE-START # Indentation increase denoting a block +// BLOCK-MAPPING-START # sequence or a block mapping. +// BLOCK-END # Indentation decrease. +// FLOW-SEQUENCE-START # '[' +// FLOW-SEQUENCE-END # ']' +// BLOCK-SEQUENCE-START # '{' +// BLOCK-SEQUENCE-END # '}' +// BLOCK-ENTRY # '-' +// FLOW-ENTRY # ',' +// KEY # '?' or nothing (simple keys). +// VALUE # ':' +// ALIAS(anchor) # '*anchor' +// ANCHOR(anchor) # '&anchor' +// TAG(handle,suffix) # '!handle!suffix' +// SCALAR(value,style) # A scalar. +// +// The following two tokens are "virtual" tokens denoting the beginning and the +// end of the stream: +// +// STREAM-START(encoding) +// STREAM-END +// +// We pass the information about the input stream encoding with the +// STREAM-START token. +// +// The next two tokens are responsible for tags: +// +// VERSION-DIRECTIVE(major,minor) +// TAG-DIRECTIVE(handle,prefix) +// +// Example: +// +// %YAML 1.1 +// %TAG ! !foo +// %TAG !yaml! tag:yaml.org,2002: +// --- +// +// The correspoding sequence of tokens: +// +// STREAM-START(utf-8) +// VERSION-DIRECTIVE(1,1) +// TAG-DIRECTIVE("!","!foo") +// TAG-DIRECTIVE("!yaml","tag:yaml.org,2002:") +// DOCUMENT-START +// STREAM-END +// +// Note that the VERSION-DIRECTIVE and TAG-DIRECTIVE tokens occupy a whole +// line. +// +// The document start and end indicators are represented by: +// +// DOCUMENT-START +// DOCUMENT-END +// +// Note that if a YAML stream contains an implicit document (without '---' +// and '...' indicators), no DOCUMENT-START and DOCUMENT-END tokens will be +// produced. +// +// In the following examples, we present whole documents together with the +// produced tokens. +// +// 1. An implicit document: +// +// 'a scalar' +// +// Tokens: +// +// STREAM-START(utf-8) +// SCALAR("a scalar",single-quoted) +// STREAM-END +// +// 2. An explicit document: +// +// --- +// 'a scalar' +// ... +// +// Tokens: +// +// STREAM-START(utf-8) +// DOCUMENT-START +// SCALAR("a scalar",single-quoted) +// DOCUMENT-END +// STREAM-END +// +// 3. Several documents in a stream: +// +// 'a scalar' +// --- +// 'another scalar' +// --- +// 'yet another scalar' +// +// Tokens: +// +// STREAM-START(utf-8) +// SCALAR("a scalar",single-quoted) +// DOCUMENT-START +// SCALAR("another scalar",single-quoted) +// DOCUMENT-START +// SCALAR("yet another scalar",single-quoted) +// STREAM-END +// +// We have already introduced the SCALAR token above. The following tokens are +// used to describe aliases, anchors, tag, and scalars: +// +// ALIAS(anchor) +// ANCHOR(anchor) +// TAG(handle,suffix) +// SCALAR(value,style) +// +// The following series of examples illustrate the usage of these tokens: +// +// 1. A recursive sequence: +// +// &A [ *A ] +// +// Tokens: +// +// STREAM-START(utf-8) +// ANCHOR("A") +// FLOW-SEQUENCE-START +// ALIAS("A") +// FLOW-SEQUENCE-END +// STREAM-END +// +// 2. A tagged scalar: +// +// !!float "3.14" # A good approximation. +// +// Tokens: +// +// STREAM-START(utf-8) +// TAG("!!","float") +// SCALAR("3.14",double-quoted) +// STREAM-END +// +// 3. Various scalar styles: +// +// --- # Implicit empty plain scalars do not produce tokens. +// --- a plain scalar +// --- 'a single-quoted scalar' +// --- "a double-quoted scalar" +// --- |- +// a literal scalar +// --- >- +// a folded +// scalar +// +// Tokens: +// +// STREAM-START(utf-8) +// DOCUMENT-START +// DOCUMENT-START +// SCALAR("a plain scalar",plain) +// DOCUMENT-START +// SCALAR("a single-quoted scalar",single-quoted) +// DOCUMENT-START +// SCALAR("a double-quoted scalar",double-quoted) +// DOCUMENT-START +// SCALAR("a literal scalar",literal) +// DOCUMENT-START +// SCALAR("a folded scalar",folded) +// STREAM-END +// +// Now it's time to review collection-related tokens. We will start with +// flow collections: +// +// FLOW-SEQUENCE-START +// FLOW-SEQUENCE-END +// FLOW-MAPPING-START +// FLOW-MAPPING-END +// FLOW-ENTRY +// KEY +// VALUE +// +// The tokens FLOW-SEQUENCE-START, FLOW-SEQUENCE-END, FLOW-MAPPING-START, and +// FLOW-MAPPING-END represent the indicators '[', ']', '{', and '}' +// correspondingly. FLOW-ENTRY represent the ',' indicator. Finally the +// indicators '?' and ':', which are used for denoting mapping keys and values, +// are represented by the KEY and VALUE tokens. +// +// The following examples show flow collections: +// +// 1. A flow sequence: +// +// [item 1, item 2, item 3] +// +// Tokens: +// +// STREAM-START(utf-8) +// FLOW-SEQUENCE-START +// SCALAR("item 1",plain) +// FLOW-ENTRY +// SCALAR("item 2",plain) +// FLOW-ENTRY +// SCALAR("item 3",plain) +// FLOW-SEQUENCE-END +// STREAM-END +// +// 2. A flow mapping: +// +// { +// a simple key: a value, # Note that the KEY token is produced. +// ? a complex key: another value, +// } +// +// Tokens: +// +// STREAM-START(utf-8) +// FLOW-MAPPING-START +// KEY +// SCALAR("a simple key",plain) +// VALUE +// SCALAR("a value",plain) +// FLOW-ENTRY +// KEY +// SCALAR("a complex key",plain) +// VALUE +// SCALAR("another value",plain) +// FLOW-ENTRY +// FLOW-MAPPING-END +// STREAM-END +// +// A simple key is a key which is not denoted by the '?' indicator. Note that +// the Scanner still produce the KEY token whenever it encounters a simple key. +// +// For scanning block collections, the following tokens are used (note that we +// repeat KEY and VALUE here): +// +// BLOCK-SEQUENCE-START +// BLOCK-MAPPING-START +// BLOCK-END +// BLOCK-ENTRY +// KEY +// VALUE +// +// The tokens BLOCK-SEQUENCE-START and BLOCK-MAPPING-START denote indentation +// increase that precedes a block collection (cf. the INDENT token in Python). +// The token BLOCK-END denote indentation decrease that ends a block collection +// (cf. the DEDENT token in Python). However YAML has some syntax pecularities +// that makes detections of these tokens more complex. +// +// The tokens BLOCK-ENTRY, KEY, and VALUE are used to represent the indicators +// '-', '?', and ':' correspondingly. +// +// The following examples show how the tokens BLOCK-SEQUENCE-START, +// BLOCK-MAPPING-START, and BLOCK-END are emitted by the Scanner: +// +// 1. Block sequences: +// +// - item 1 +// - item 2 +// - +// - item 3.1 +// - item 3.2 +// - +// key 1: value 1 +// key 2: value 2 +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-ENTRY +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 3.1",plain) +// BLOCK-ENTRY +// SCALAR("item 3.2",plain) +// BLOCK-END +// BLOCK-ENTRY +// BLOCK-MAPPING-START +// KEY +// SCALAR("key 1",plain) +// VALUE +// SCALAR("value 1",plain) +// KEY +// SCALAR("key 2",plain) +// VALUE +// SCALAR("value 2",plain) +// BLOCK-END +// BLOCK-END +// STREAM-END +// +// 2. Block mappings: +// +// a simple key: a value # The KEY token is produced here. +// ? a complex key +// : another value +// a mapping: +// key 1: value 1 +// key 2: value 2 +// a sequence: +// - item 1 +// - item 2 +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-MAPPING-START +// KEY +// SCALAR("a simple key",plain) +// VALUE +// SCALAR("a value",plain) +// KEY +// SCALAR("a complex key",plain) +// VALUE +// SCALAR("another value",plain) +// KEY +// SCALAR("a mapping",plain) +// BLOCK-MAPPING-START +// KEY +// SCALAR("key 1",plain) +// VALUE +// SCALAR("value 1",plain) +// KEY +// SCALAR("key 2",plain) +// VALUE +// SCALAR("value 2",plain) +// BLOCK-END +// KEY +// SCALAR("a sequence",plain) +// VALUE +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-END +// BLOCK-END +// STREAM-END +// +// YAML does not always require to start a new block collection from a new +// line. If the current line contains only '-', '?', and ':' indicators, a new +// block collection may start at the current line. The following examples +// illustrate this case: +// +// 1. Collections in a sequence: +// +// - - item 1 +// - item 2 +// - key 1: value 1 +// key 2: value 2 +// - ? complex key +// : complex value +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-END +// BLOCK-ENTRY +// BLOCK-MAPPING-START +// KEY +// SCALAR("key 1",plain) +// VALUE +// SCALAR("value 1",plain) +// KEY +// SCALAR("key 2",plain) +// VALUE +// SCALAR("value 2",plain) +// BLOCK-END +// BLOCK-ENTRY +// BLOCK-MAPPING-START +// KEY +// SCALAR("complex key") +// VALUE +// SCALAR("complex value") +// BLOCK-END +// BLOCK-END +// STREAM-END +// +// 2. Collections in a mapping: +// +// ? a sequence +// : - item 1 +// - item 2 +// ? a mapping +// : key 1: value 1 +// key 2: value 2 +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-MAPPING-START +// KEY +// SCALAR("a sequence",plain) +// VALUE +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-END +// KEY +// SCALAR("a mapping",plain) +// VALUE +// BLOCK-MAPPING-START +// KEY +// SCALAR("key 1",plain) +// VALUE +// SCALAR("value 1",plain) +// KEY +// SCALAR("key 2",plain) +// VALUE +// SCALAR("value 2",plain) +// BLOCK-END +// BLOCK-END +// STREAM-END +// +// YAML also permits non-indented sequences if they are included into a block +// mapping. In this case, the token BLOCK-SEQUENCE-START is not produced: +// +// key: +// - item 1 # BLOCK-SEQUENCE-START is NOT produced here. +// - item 2 +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-MAPPING-START +// KEY +// SCALAR("key",plain) +// VALUE +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-END +// + +// Ensure that the buffer contains the required number of characters. +// Return true on success, false on failure (reader error or memory error). +func cache(parser *yaml_parser_t, length int) bool { + // [Go] This was inlined: !cache(A, B) -> unread < B && !update(A, B) + return parser.unread >= length || yaml_parser_update_buffer(parser, length) +} + +// Advance the buffer pointer. +func skip(parser *yaml_parser_t) { + parser.mark.index++ + parser.mark.column++ + parser.unread-- + parser.buffer_pos += width(parser.buffer[parser.buffer_pos]) +} + +func skip_line(parser *yaml_parser_t) { + if is_crlf(parser.buffer, parser.buffer_pos) { + parser.mark.index += 2 + parser.mark.column = 0 + parser.mark.line++ + parser.unread -= 2 + parser.buffer_pos += 2 + } else if is_break(parser.buffer, parser.buffer_pos) { + parser.mark.index++ + parser.mark.column = 0 + parser.mark.line++ + parser.unread-- + parser.buffer_pos += width(parser.buffer[parser.buffer_pos]) + } +} + +// Copy a character to a string buffer and advance pointers. +func read(parser *yaml_parser_t, s []byte) []byte { + w := width(parser.buffer[parser.buffer_pos]) + if w == 0 { + panic("invalid character sequence") + } + if len(s) == 0 { + s = make([]byte, 0, 32) + } + if w == 1 && len(s)+w <= cap(s) { + s = s[:len(s)+1] + s[len(s)-1] = parser.buffer[parser.buffer_pos] + parser.buffer_pos++ + } else { + s = append(s, parser.buffer[parser.buffer_pos:parser.buffer_pos+w]...) + parser.buffer_pos += w + } + parser.mark.index++ + parser.mark.column++ + parser.unread-- + return s +} + +// Copy a line break character to a string buffer and advance pointers. +func read_line(parser *yaml_parser_t, s []byte) []byte { + buf := parser.buffer + pos := parser.buffer_pos + switch { + case buf[pos] == '\r' && buf[pos+1] == '\n': + // CR LF . LF + s = append(s, '\n') + parser.buffer_pos += 2 + parser.mark.index++ + parser.unread-- + case buf[pos] == '\r' || buf[pos] == '\n': + // CR|LF . LF + s = append(s, '\n') + parser.buffer_pos += 1 + case buf[pos] == '\xC2' && buf[pos+1] == '\x85': + // NEL . LF + s = append(s, '\n') + parser.buffer_pos += 2 + case buf[pos] == '\xE2' && buf[pos+1] == '\x80' && (buf[pos+2] == '\xA8' || buf[pos+2] == '\xA9'): + // LS|PS . LS|PS + s = append(s, buf[parser.buffer_pos:pos+3]...) + parser.buffer_pos += 3 + default: + return s + } + parser.mark.index++ + parser.mark.column = 0 + parser.mark.line++ + parser.unread-- + return s +} + +// Get the next token. +func yaml_parser_scan(parser *yaml_parser_t, token *yaml_token_t) bool { + // Erase the token object. + *token = yaml_token_t{} // [Go] Is this necessary? + + // No tokens after STREAM-END or error. + if parser.stream_end_produced || parser.error != yaml_NO_ERROR { + return true + } + + // Ensure that the tokens queue contains enough tokens. + if !parser.token_available { + if !yaml_parser_fetch_more_tokens(parser) { + return false + } + } + + // Fetch the next token from the queue. + *token = parser.tokens[parser.tokens_head] + parser.tokens_head++ + parser.tokens_parsed++ + parser.token_available = false + + if token.typ == yaml_STREAM_END_TOKEN { + parser.stream_end_produced = true + } + return true +} + +// Set the scanner error and return false. +func yaml_parser_set_scanner_error(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string) bool { + parser.error = yaml_SCANNER_ERROR + parser.context = context + parser.context_mark = context_mark + parser.problem = problem + parser.problem_mark = parser.mark + return false +} + +func yaml_parser_set_scanner_tag_error(parser *yaml_parser_t, directive bool, context_mark yaml_mark_t, problem string) bool { + context := "while parsing a tag" + if directive { + context = "while parsing a %TAG directive" + } + return yaml_parser_set_scanner_error(parser, context, context_mark, "did not find URI escaped octet") +} + +func trace(args ...interface{}) func() { + pargs := append([]interface{}{"+++"}, args...) + fmt.Println(pargs...) + pargs = append([]interface{}{"---"}, args...) + return func() { fmt.Println(pargs...) } +} + +// Ensure that the tokens queue contains at least one token which can be +// returned to the Parser. +func yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool { + // While we need more tokens to fetch, do it. + for { + // Check if we really need to fetch more tokens. + need_more_tokens := false + + if parser.tokens_head == len(parser.tokens) { + // Queue is empty. + need_more_tokens = true + } else { + // Check if any potential simple key may occupy the head position. + if !yaml_parser_stale_simple_keys(parser) { + return false + } + + for i := range parser.simple_keys { + simple_key := &parser.simple_keys[i] + if simple_key.possible && simple_key.token_number == parser.tokens_parsed { + need_more_tokens = true + break + } + } + } + + // We are finished. + if !need_more_tokens { + break + } + // Fetch the next token. + if !yaml_parser_fetch_next_token(parser) { + return false + } + } + + parser.token_available = true + return true +} + +// The dispatcher for token fetchers. +func yaml_parser_fetch_next_token(parser *yaml_parser_t) bool { + // Ensure that the buffer is initialized. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + // Check if we just started scanning. Fetch STREAM-START then. + if !parser.stream_start_produced { + return yaml_parser_fetch_stream_start(parser) + } + + // Eat whitespaces and comments until we reach the next token. + if !yaml_parser_scan_to_next_token(parser) { + return false + } + + // Remove obsolete potential simple keys. + if !yaml_parser_stale_simple_keys(parser) { + return false + } + + // Check the indentation level against the current column. + if !yaml_parser_unroll_indent(parser, parser.mark.column) { + return false + } + + // Ensure that the buffer contains at least 4 characters. 4 is the length + // of the longest indicators ('--- ' and '... '). + if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { + return false + } + + // Is it the end of the stream? + if is_z(parser.buffer, parser.buffer_pos) { + return yaml_parser_fetch_stream_end(parser) + } + + // Is it a directive? + if parser.mark.column == 0 && parser.buffer[parser.buffer_pos] == '%' { + return yaml_parser_fetch_directive(parser) + } + + buf := parser.buffer + pos := parser.buffer_pos + + // Is it the document start indicator? + if parser.mark.column == 0 && buf[pos] == '-' && buf[pos+1] == '-' && buf[pos+2] == '-' && is_blankz(buf, pos+3) { + return yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_START_TOKEN) + } + + // Is it the document end indicator? + if parser.mark.column == 0 && buf[pos] == '.' && buf[pos+1] == '.' && buf[pos+2] == '.' && is_blankz(buf, pos+3) { + return yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_END_TOKEN) + } + + // Is it the flow sequence start indicator? + if buf[pos] == '[' { + return yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_SEQUENCE_START_TOKEN) + } + + // Is it the flow mapping start indicator? + if parser.buffer[parser.buffer_pos] == '{' { + return yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_MAPPING_START_TOKEN) + } + + // Is it the flow sequence end indicator? + if parser.buffer[parser.buffer_pos] == ']' { + return yaml_parser_fetch_flow_collection_end(parser, + yaml_FLOW_SEQUENCE_END_TOKEN) + } + + // Is it the flow mapping end indicator? + if parser.buffer[parser.buffer_pos] == '}' { + return yaml_parser_fetch_flow_collection_end(parser, + yaml_FLOW_MAPPING_END_TOKEN) + } + + // Is it the flow entry indicator? + if parser.buffer[parser.buffer_pos] == ',' { + return yaml_parser_fetch_flow_entry(parser) + } + + // Is it the block entry indicator? + if parser.buffer[parser.buffer_pos] == '-' && is_blankz(parser.buffer, parser.buffer_pos+1) { + return yaml_parser_fetch_block_entry(parser) + } + + // Is it the key indicator? + if parser.buffer[parser.buffer_pos] == '?' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) { + return yaml_parser_fetch_key(parser) + } + + // Is it the value indicator? + if parser.buffer[parser.buffer_pos] == ':' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) { + return yaml_parser_fetch_value(parser) + } + + // Is it an alias? + if parser.buffer[parser.buffer_pos] == '*' { + return yaml_parser_fetch_anchor(parser, yaml_ALIAS_TOKEN) + } + + // Is it an anchor? + if parser.buffer[parser.buffer_pos] == '&' { + return yaml_parser_fetch_anchor(parser, yaml_ANCHOR_TOKEN) + } + + // Is it a tag? + if parser.buffer[parser.buffer_pos] == '!' { + return yaml_parser_fetch_tag(parser) + } + + // Is it a literal scalar? + if parser.buffer[parser.buffer_pos] == '|' && parser.flow_level == 0 { + return yaml_parser_fetch_block_scalar(parser, true) + } + + // Is it a folded scalar? + if parser.buffer[parser.buffer_pos] == '>' && parser.flow_level == 0 { + return yaml_parser_fetch_block_scalar(parser, false) + } + + // Is it a single-quoted scalar? + if parser.buffer[parser.buffer_pos] == '\'' { + return yaml_parser_fetch_flow_scalar(parser, true) + } + + // Is it a double-quoted scalar? + if parser.buffer[parser.buffer_pos] == '"' { + return yaml_parser_fetch_flow_scalar(parser, false) + } + + // Is it a plain scalar? + // + // A plain scalar may start with any non-blank characters except + // + // '-', '?', ':', ',', '[', ']', '{', '}', + // '#', '&', '*', '!', '|', '>', '\'', '\"', + // '%', '@', '`'. + // + // In the block context (and, for the '-' indicator, in the flow context + // too), it may also start with the characters + // + // '-', '?', ':' + // + // if it is followed by a non-space character. + // + // The last rule is more restrictive than the specification requires. + // [Go] Make this logic more reasonable. + //switch parser.buffer[parser.buffer_pos] { + //case '-', '?', ':', ',', '?', '-', ',', ':', ']', '[', '}', '{', '&', '#', '!', '*', '>', '|', '"', '\'', '@', '%', '-', '`': + //} + if !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '-' || + parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':' || + parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '[' || + parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' || + parser.buffer[parser.buffer_pos] == '}' || parser.buffer[parser.buffer_pos] == '#' || + parser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '*' || + parser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '|' || + parser.buffer[parser.buffer_pos] == '>' || parser.buffer[parser.buffer_pos] == '\'' || + parser.buffer[parser.buffer_pos] == '"' || parser.buffer[parser.buffer_pos] == '%' || + parser.buffer[parser.buffer_pos] == '@' || parser.buffer[parser.buffer_pos] == '`') || + (parser.buffer[parser.buffer_pos] == '-' && !is_blank(parser.buffer, parser.buffer_pos+1)) || + (parser.flow_level == 0 && + (parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':') && + !is_blankz(parser.buffer, parser.buffer_pos+1)) { + return yaml_parser_fetch_plain_scalar(parser) + } + + // If we don't determine the token type so far, it is an error. + return yaml_parser_set_scanner_error(parser, + "while scanning for the next token", parser.mark, + "found character that cannot start any token") +} + +// Check the list of potential simple keys and remove the positions that +// cannot contain simple keys anymore. +func yaml_parser_stale_simple_keys(parser *yaml_parser_t) bool { + // Check for a potential simple key for each flow level. + for i := range parser.simple_keys { + simple_key := &parser.simple_keys[i] + + // The specification requires that a simple key + // + // - is limited to a single line, + // - is shorter than 1024 characters. + if simple_key.possible && (simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index) { + + // Check if the potential simple key to be removed is required. + if simple_key.required { + return yaml_parser_set_scanner_error(parser, + "while scanning a simple key", simple_key.mark, + "could not find expected ':'") + } + simple_key.possible = false + } + } + return true +} + +// Check if a simple key may start at the current position and add it if +// needed. +func yaml_parser_save_simple_key(parser *yaml_parser_t) bool { + // A simple key is required at the current position if the scanner is in + // the block context and the current column coincides with the indentation + // level. + + required := parser.flow_level == 0 && parser.indent == parser.mark.column + + // A simple key is required only when it is the first token in the current + // line. Therefore it is always allowed. But we add a check anyway. + if required && !parser.simple_key_allowed { + panic("should not happen") + } + + // + // If the current position may start a simple key, save it. + // + if parser.simple_key_allowed { + simple_key := yaml_simple_key_t{ + possible: true, + required: required, + token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head), + } + simple_key.mark = parser.mark + + if !yaml_parser_remove_simple_key(parser) { + return false + } + parser.simple_keys[len(parser.simple_keys)-1] = simple_key + } + return true +} + +// Remove a potential simple key at the current flow level. +func yaml_parser_remove_simple_key(parser *yaml_parser_t) bool { + i := len(parser.simple_keys) - 1 + if parser.simple_keys[i].possible { + // If the key is required, it is an error. + if parser.simple_keys[i].required { + return yaml_parser_set_scanner_error(parser, + "while scanning a simple key", parser.simple_keys[i].mark, + "could not find expected ':'") + } + } + // Remove the key from the stack. + parser.simple_keys[i].possible = false + return true +} + +// Increase the flow level and resize the simple key list if needed. +func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool { + // Reset the simple key on the next level. + parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{}) + + // Increase the flow level. + parser.flow_level++ + return true +} + +// Decrease the flow level. +func yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool { + if parser.flow_level > 0 { + parser.flow_level-- + parser.simple_keys = parser.simple_keys[:len(parser.simple_keys)-1] + } + return true +} + +// Push the current indentation level to the stack and set the new level +// the current column is greater than the indentation level. In this case, +// append or insert the specified token into the token queue. +func yaml_parser_roll_indent(parser *yaml_parser_t, column, number int, typ yaml_token_type_t, mark yaml_mark_t) bool { + // In the flow context, do nothing. + if parser.flow_level > 0 { + return true + } + + if parser.indent < column { + // Push the current indentation level to the stack and set the new + // indentation level. + parser.indents = append(parser.indents, parser.indent) + parser.indent = column + + // Create a token and insert it into the queue. + token := yaml_token_t{ + typ: typ, + start_mark: mark, + end_mark: mark, + } + if number > -1 { + number -= parser.tokens_parsed + } + yaml_insert_token(parser, number, &token) + } + return true +} + +// Pop indentation levels from the indents stack until the current level +// becomes less or equal to the column. For each intendation level, append +// the BLOCK-END token. +func yaml_parser_unroll_indent(parser *yaml_parser_t, column int) bool { + // In the flow context, do nothing. + if parser.flow_level > 0 { + return true + } + + // Loop through the intendation levels in the stack. + for parser.indent > column { + // Create a token and append it to the queue. + token := yaml_token_t{ + typ: yaml_BLOCK_END_TOKEN, + start_mark: parser.mark, + end_mark: parser.mark, + } + yaml_insert_token(parser, -1, &token) + + // Pop the indentation level. + parser.indent = parser.indents[len(parser.indents)-1] + parser.indents = parser.indents[:len(parser.indents)-1] + } + return true +} + +// Initialize the scanner and produce the STREAM-START token. +func yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool { + + // Set the initial indentation. + parser.indent = -1 + + // Initialize the simple key stack. + parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{}) + + // A simple key is allowed at the beginning of the stream. + parser.simple_key_allowed = true + + // We have started. + parser.stream_start_produced = true + + // Create the STREAM-START token and append it to the queue. + token := yaml_token_t{ + typ: yaml_STREAM_START_TOKEN, + start_mark: parser.mark, + end_mark: parser.mark, + encoding: parser.encoding, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the STREAM-END token and shut down the scanner. +func yaml_parser_fetch_stream_end(parser *yaml_parser_t) bool { + + // Force new line. + if parser.mark.column != 0 { + parser.mark.column = 0 + parser.mark.line++ + } + + // Reset the indentation level. + if !yaml_parser_unroll_indent(parser, -1) { + return false + } + + // Reset simple keys. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + parser.simple_key_allowed = false + + // Create the STREAM-END token and append it to the queue. + token := yaml_token_t{ + typ: yaml_STREAM_END_TOKEN, + start_mark: parser.mark, + end_mark: parser.mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce a VERSION-DIRECTIVE or TAG-DIRECTIVE token. +func yaml_parser_fetch_directive(parser *yaml_parser_t) bool { + // Reset the indentation level. + if !yaml_parser_unroll_indent(parser, -1) { + return false + } + + // Reset simple keys. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + parser.simple_key_allowed = false + + // Create the YAML-DIRECTIVE or TAG-DIRECTIVE token. + token := yaml_token_t{} + if !yaml_parser_scan_directive(parser, &token) { + return false + } + // Append the token to the queue. + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the DOCUMENT-START or DOCUMENT-END token. +func yaml_parser_fetch_document_indicator(parser *yaml_parser_t, typ yaml_token_type_t) bool { + // Reset the indentation level. + if !yaml_parser_unroll_indent(parser, -1) { + return false + } + + // Reset simple keys. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + parser.simple_key_allowed = false + + // Consume the token. + start_mark := parser.mark + + skip(parser) + skip(parser) + skip(parser) + + end_mark := parser.mark + + // Create the DOCUMENT-START or DOCUMENT-END token. + token := yaml_token_t{ + typ: typ, + start_mark: start_mark, + end_mark: end_mark, + } + // Append the token to the queue. + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the FLOW-SEQUENCE-START or FLOW-MAPPING-START token. +func yaml_parser_fetch_flow_collection_start(parser *yaml_parser_t, typ yaml_token_type_t) bool { + // The indicators '[' and '{' may start a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // Increase the flow level. + if !yaml_parser_increase_flow_level(parser) { + return false + } + + // A simple key may follow the indicators '[' and '{'. + parser.simple_key_allowed = true + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the FLOW-SEQUENCE-START of FLOW-MAPPING-START token. + token := yaml_token_t{ + typ: typ, + start_mark: start_mark, + end_mark: end_mark, + } + // Append the token to the queue. + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the FLOW-SEQUENCE-END or FLOW-MAPPING-END token. +func yaml_parser_fetch_flow_collection_end(parser *yaml_parser_t, typ yaml_token_type_t) bool { + // Reset any potential simple key on the current flow level. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // Decrease the flow level. + if !yaml_parser_decrease_flow_level(parser) { + return false + } + + // No simple keys after the indicators ']' and '}'. + parser.simple_key_allowed = false + + // Consume the token. + + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the FLOW-SEQUENCE-END of FLOW-MAPPING-END token. + token := yaml_token_t{ + typ: typ, + start_mark: start_mark, + end_mark: end_mark, + } + // Append the token to the queue. + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the FLOW-ENTRY token. +func yaml_parser_fetch_flow_entry(parser *yaml_parser_t) bool { + // Reset any potential simple keys on the current flow level. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // Simple keys are allowed after ','. + parser.simple_key_allowed = true + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the FLOW-ENTRY token and append it to the queue. + token := yaml_token_t{ + typ: yaml_FLOW_ENTRY_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the BLOCK-ENTRY token. +func yaml_parser_fetch_block_entry(parser *yaml_parser_t) bool { + // Check if the scanner is in the block context. + if parser.flow_level == 0 { + // Check if we are allowed to start a new entry. + if !parser.simple_key_allowed { + return yaml_parser_set_scanner_error(parser, "", parser.mark, + "block sequence entries are not allowed in this context") + } + // Add the BLOCK-SEQUENCE-START token if needed. + if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_SEQUENCE_START_TOKEN, parser.mark) { + return false + } + } else { + // It is an error for the '-' indicator to occur in the flow context, + // but we let the Parser detect and report about it because the Parser + // is able to point to the context. + } + + // Reset any potential simple keys on the current flow level. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // Simple keys are allowed after '-'. + parser.simple_key_allowed = true + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the BLOCK-ENTRY token and append it to the queue. + token := yaml_token_t{ + typ: yaml_BLOCK_ENTRY_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the KEY token. +func yaml_parser_fetch_key(parser *yaml_parser_t) bool { + + // In the block context, additional checks are required. + if parser.flow_level == 0 { + // Check if we are allowed to start a new key (not nessesary simple). + if !parser.simple_key_allowed { + return yaml_parser_set_scanner_error(parser, "", parser.mark, + "mapping keys are not allowed in this context") + } + // Add the BLOCK-MAPPING-START token if needed. + if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) { + return false + } + } + + // Reset any potential simple keys on the current flow level. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // Simple keys are allowed after '?' in the block context. + parser.simple_key_allowed = parser.flow_level == 0 + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the KEY token and append it to the queue. + token := yaml_token_t{ + typ: yaml_KEY_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the VALUE token. +func yaml_parser_fetch_value(parser *yaml_parser_t) bool { + + simple_key := &parser.simple_keys[len(parser.simple_keys)-1] + + // Have we found a simple key? + if simple_key.possible { + // Create the KEY token and insert it into the queue. + token := yaml_token_t{ + typ: yaml_KEY_TOKEN, + start_mark: simple_key.mark, + end_mark: simple_key.mark, + } + yaml_insert_token(parser, simple_key.token_number-parser.tokens_parsed, &token) + + // In the block context, we may need to add the BLOCK-MAPPING-START token. + if !yaml_parser_roll_indent(parser, simple_key.mark.column, + simple_key.token_number, + yaml_BLOCK_MAPPING_START_TOKEN, simple_key.mark) { + return false + } + + // Remove the simple key. + simple_key.possible = false + + // A simple key cannot follow another simple key. + parser.simple_key_allowed = false + + } else { + // The ':' indicator follows a complex key. + + // In the block context, extra checks are required. + if parser.flow_level == 0 { + + // Check if we are allowed to start a complex value. + if !parser.simple_key_allowed { + return yaml_parser_set_scanner_error(parser, "", parser.mark, + "mapping values are not allowed in this context") + } + + // Add the BLOCK-MAPPING-START token if needed. + if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) { + return false + } + } + + // Simple keys after ':' are allowed in the block context. + parser.simple_key_allowed = parser.flow_level == 0 + } + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the VALUE token and append it to the queue. + token := yaml_token_t{ + typ: yaml_VALUE_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the ALIAS or ANCHOR token. +func yaml_parser_fetch_anchor(parser *yaml_parser_t, typ yaml_token_type_t) bool { + // An anchor or an alias could be a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // A simple key cannot follow an anchor or an alias. + parser.simple_key_allowed = false + + // Create the ALIAS or ANCHOR token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_anchor(parser, &token, typ) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the TAG token. +func yaml_parser_fetch_tag(parser *yaml_parser_t) bool { + // A tag could be a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // A simple key cannot follow a tag. + parser.simple_key_allowed = false + + // Create the TAG token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_tag(parser, &token) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the SCALAR(...,literal) or SCALAR(...,folded) tokens. +func yaml_parser_fetch_block_scalar(parser *yaml_parser_t, literal bool) bool { + // Remove any potential simple keys. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // A simple key may follow a block scalar. + parser.simple_key_allowed = true + + // Create the SCALAR token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_block_scalar(parser, &token, literal) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the SCALAR(...,single-quoted) or SCALAR(...,double-quoted) tokens. +func yaml_parser_fetch_flow_scalar(parser *yaml_parser_t, single bool) bool { + // A plain scalar could be a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // A simple key cannot follow a flow scalar. + parser.simple_key_allowed = false + + // Create the SCALAR token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_flow_scalar(parser, &token, single) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the SCALAR(...,plain) token. +func yaml_parser_fetch_plain_scalar(parser *yaml_parser_t) bool { + // A plain scalar could be a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // A simple key cannot follow a flow scalar. + parser.simple_key_allowed = false + + // Create the SCALAR token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_plain_scalar(parser, &token) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Eat whitespaces and comments until the next token is found. +func yaml_parser_scan_to_next_token(parser *yaml_parser_t) bool { + + // Until the next token is not found. + for { + // Allow the BOM mark to start a line. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if parser.mark.column == 0 && is_bom(parser.buffer, parser.buffer_pos) { + skip(parser) + } + + // Eat whitespaces. + // Tabs are allowed: + // - in the flow context + // - in the block context, but not at the beginning of the line or + // after '-', '?', or ':' (complex value). + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for parser.buffer[parser.buffer_pos] == ' ' || ((parser.flow_level > 0 || !parser.simple_key_allowed) && parser.buffer[parser.buffer_pos] == '\t') { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Eat a comment until a line break. + if parser.buffer[parser.buffer_pos] == '#' { + for !is_breakz(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + } + + // If it is a line break, eat it. + if is_break(parser.buffer, parser.buffer_pos) { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + skip_line(parser) + + // In the block context, a new line may start a simple key. + if parser.flow_level == 0 { + parser.simple_key_allowed = true + } + } else { + break // We have found a token. + } + } + + return true +} + +// Scan a YAML-DIRECTIVE or TAG-DIRECTIVE token. +// +// Scope: +// %YAML 1.1 # a comment \n +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +// %TAG !yaml! tag:yaml.org,2002: \n +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +// +func yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool { + // Eat '%'. + start_mark := parser.mark + skip(parser) + + // Scan the directive name. + var name []byte + if !yaml_parser_scan_directive_name(parser, start_mark, &name) { + return false + } + + // Is it a YAML directive? + if bytes.Equal(name, []byte("YAML")) { + // Scan the VERSION directive value. + var major, minor int8 + if !yaml_parser_scan_version_directive_value(parser, start_mark, &major, &minor) { + return false + } + end_mark := parser.mark + + // Create a VERSION-DIRECTIVE token. + *token = yaml_token_t{ + typ: yaml_VERSION_DIRECTIVE_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + major: major, + minor: minor, + } + + // Is it a TAG directive? + } else if bytes.Equal(name, []byte("TAG")) { + // Scan the TAG directive value. + var handle, prefix []byte + if !yaml_parser_scan_tag_directive_value(parser, start_mark, &handle, &prefix) { + return false + } + end_mark := parser.mark + + // Create a TAG-DIRECTIVE token. + *token = yaml_token_t{ + typ: yaml_TAG_DIRECTIVE_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: handle, + prefix: prefix, + } + + // Unknown directive. + } else { + yaml_parser_set_scanner_error(parser, "while scanning a directive", + start_mark, "found uknown directive name") + return false + } + + // Eat the rest of the line including any comments. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + if parser.buffer[parser.buffer_pos] == '#' { + for !is_breakz(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + } + + // Check if we are at the end of the line. + if !is_breakz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a directive", + start_mark, "did not find expected comment or line break") + return false + } + + // Eat a line break. + if is_break(parser.buffer, parser.buffer_pos) { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + skip_line(parser) + } + + return true +} + +// Scan the directive name. +// +// Scope: +// %YAML 1.1 # a comment \n +// ^^^^ +// %TAG !yaml! tag:yaml.org,2002: \n +// ^^^ +// +func yaml_parser_scan_directive_name(parser *yaml_parser_t, start_mark yaml_mark_t, name *[]byte) bool { + // Consume the directive name. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + var s []byte + for is_alpha(parser.buffer, parser.buffer_pos) { + s = read(parser, s) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check if the name is empty. + if len(s) == 0 { + yaml_parser_set_scanner_error(parser, "while scanning a directive", + start_mark, "could not find expected directive name") + return false + } + + // Check for an blank character after the name. + if !is_blankz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a directive", + start_mark, "found unexpected non-alphabetical character") + return false + } + *name = s + return true +} + +// Scan the value of VERSION-DIRECTIVE. +// +// Scope: +// %YAML 1.1 # a comment \n +// ^^^^^^ +func yaml_parser_scan_version_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, major, minor *int8) bool { + // Eat whitespaces. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Consume the major version number. + if !yaml_parser_scan_version_directive_number(parser, start_mark, major) { + return false + } + + // Eat '.'. + if parser.buffer[parser.buffer_pos] != '.' { + return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", + start_mark, "did not find expected digit or '.' character") + } + + skip(parser) + + // Consume the minor version number. + if !yaml_parser_scan_version_directive_number(parser, start_mark, minor) { + return false + } + return true +} + +const max_number_length = 2 + +// Scan the version number of VERSION-DIRECTIVE. +// +// Scope: +// %YAML 1.1 # a comment \n +// ^ +// %YAML 1.1 # a comment \n +// ^ +func yaml_parser_scan_version_directive_number(parser *yaml_parser_t, start_mark yaml_mark_t, number *int8) bool { + + // Repeat while the next character is digit. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + var value, length int8 + for is_digit(parser.buffer, parser.buffer_pos) { + // Check if the number is too long. + length++ + if length > max_number_length { + return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", + start_mark, "found extremely long version number") + } + value = value*10 + int8(as_digit(parser.buffer, parser.buffer_pos)) + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check if the number was present. + if length == 0 { + return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", + start_mark, "did not find expected version number") + } + *number = value + return true +} + +// Scan the value of a TAG-DIRECTIVE token. +// +// Scope: +// %TAG !yaml! tag:yaml.org,2002: \n +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +// +func yaml_parser_scan_tag_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, handle, prefix *[]byte) bool { + var handle_value, prefix_value []byte + + // Eat whitespaces. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Scan a handle. + if !yaml_parser_scan_tag_handle(parser, true, start_mark, &handle_value) { + return false + } + + // Expect a whitespace. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if !is_blank(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive", + start_mark, "did not find expected whitespace") + return false + } + + // Eat whitespaces. + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Scan a prefix. + if !yaml_parser_scan_tag_uri(parser, true, nil, start_mark, &prefix_value) { + return false + } + + // Expect a whitespace or line break. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if !is_blankz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive", + start_mark, "did not find expected whitespace or line break") + return false + } + + *handle = handle_value + *prefix = prefix_value + return true +} + +func yaml_parser_scan_anchor(parser *yaml_parser_t, token *yaml_token_t, typ yaml_token_type_t) bool { + var s []byte + + // Eat the indicator character. + start_mark := parser.mark + skip(parser) + + // Consume the value. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_alpha(parser.buffer, parser.buffer_pos) { + s = read(parser, s) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + end_mark := parser.mark + + /* + * Check if length of the anchor is greater than 0 and it is followed by + * a whitespace character or one of the indicators: + * + * '?', ':', ',', ']', '}', '%', '@', '`'. + */ + + if len(s) == 0 || + !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '?' || + parser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == ',' || + parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '}' || + parser.buffer[parser.buffer_pos] == '%' || parser.buffer[parser.buffer_pos] == '@' || + parser.buffer[parser.buffer_pos] == '`') { + context := "while scanning an alias" + if typ == yaml_ANCHOR_TOKEN { + context = "while scanning an anchor" + } + yaml_parser_set_scanner_error(parser, context, start_mark, + "did not find expected alphabetic or numeric character") + return false + } + + // Create a token. + *token = yaml_token_t{ + typ: typ, + start_mark: start_mark, + end_mark: end_mark, + value: s, + } + + return true +} + +/* + * Scan a TAG token. + */ + +func yaml_parser_scan_tag(parser *yaml_parser_t, token *yaml_token_t) bool { + var handle, suffix []byte + + start_mark := parser.mark + + // Check if the tag is in the canonical form. + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + + if parser.buffer[parser.buffer_pos+1] == '<' { + // Keep the handle as '' + + // Eat '!<' + skip(parser) + skip(parser) + + // Consume the tag value. + if !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) { + return false + } + + // Check for '>' and eat it. + if parser.buffer[parser.buffer_pos] != '>' { + yaml_parser_set_scanner_error(parser, "while scanning a tag", + start_mark, "did not find the expected '>'") + return false + } + + skip(parser) + } else { + // The tag has either the '!suffix' or the '!handle!suffix' form. + + // First, try to scan a handle. + if !yaml_parser_scan_tag_handle(parser, false, start_mark, &handle) { + return false + } + + // Check if it is, indeed, handle. + if handle[0] == '!' && len(handle) > 1 && handle[len(handle)-1] == '!' { + // Scan the suffix now. + if !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) { + return false + } + } else { + // It wasn't a handle after all. Scan the rest of the tag. + if !yaml_parser_scan_tag_uri(parser, false, handle, start_mark, &suffix) { + return false + } + + // Set the handle to '!'. + handle = []byte{'!'} + + // A special case: the '!' tag. Set the handle to '' and the + // suffix to '!'. + if len(suffix) == 0 { + handle, suffix = suffix, handle + } + } + } + + // Check the character which ends the tag. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if !is_blankz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a tag", + start_mark, "did not find expected whitespace or line break") + return false + } + + end_mark := parser.mark + + // Create a token. + *token = yaml_token_t{ + typ: yaml_TAG_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: handle, + suffix: suffix, + } + return true +} + +// Scan a tag handle. +func yaml_parser_scan_tag_handle(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, handle *[]byte) bool { + // Check the initial '!' character. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if parser.buffer[parser.buffer_pos] != '!' { + yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "did not find expected '!'") + return false + } + + var s []byte + + // Copy the '!' character. + s = read(parser, s) + + // Copy all subsequent alphabetical and numerical characters. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + for is_alpha(parser.buffer, parser.buffer_pos) { + s = read(parser, s) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check if the trailing character is '!' and copy it. + if parser.buffer[parser.buffer_pos] == '!' { + s = read(parser, s) + } else { + // It's either the '!' tag or not really a tag handle. If it's a %TAG + // directive, it's an error. If it's a tag token, it must be a part of URI. + if directive && !(s[0] == '!' && s[1] == 0) { + yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "did not find expected '!'") + return false + } + } + + *handle = s + return true +} + +// Scan a tag. +func yaml_parser_scan_tag_uri(parser *yaml_parser_t, directive bool, head []byte, start_mark yaml_mark_t, uri *[]byte) bool { + //size_t length = head ? strlen((char *)head) : 0 + var s []byte + + // Copy the head if needed. + // + // Note that we don't copy the leading '!' character. + if len(head) > 1 { + s = append(s, head[1:]...) + } + + // Scan the tag. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + // The set of characters that may appear in URI is as follows: + // + // '0'-'9', 'A'-'Z', 'a'-'z', '_', '-', ';', '/', '?', ':', '@', '&', + // '=', '+', '$', ',', '.', '!', '~', '*', '\'', '(', ')', '[', ']', + // '%'. + // [Go] Convert this into more reasonable logic. + for is_alpha(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == ';' || + parser.buffer[parser.buffer_pos] == '/' || parser.buffer[parser.buffer_pos] == '?' || + parser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == '@' || + parser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '=' || + parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '$' || + parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '.' || + parser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '~' || + parser.buffer[parser.buffer_pos] == '*' || parser.buffer[parser.buffer_pos] == '\'' || + parser.buffer[parser.buffer_pos] == '(' || parser.buffer[parser.buffer_pos] == ')' || + parser.buffer[parser.buffer_pos] == '[' || parser.buffer[parser.buffer_pos] == ']' || + parser.buffer[parser.buffer_pos] == '%' { + // Check if it is a URI-escape sequence. + if parser.buffer[parser.buffer_pos] == '%' { + if !yaml_parser_scan_uri_escapes(parser, directive, start_mark, &s) { + return false + } + } else { + s = read(parser, s) + } + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check if the tag is non-empty. + if len(s) == 0 { + yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "did not find expected tag URI") + return false + } + *uri = s + return true +} + +// Decode an URI-escape sequence corresponding to a single UTF-8 character. +func yaml_parser_scan_uri_escapes(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, s *[]byte) bool { + + // Decode the required number of characters. + w := 1024 + for w > 0 { + // Check for a URI-escaped octet. + if parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) { + return false + } + + if !(parser.buffer[parser.buffer_pos] == '%' && + is_hex(parser.buffer, parser.buffer_pos+1) && + is_hex(parser.buffer, parser.buffer_pos+2)) { + return yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "did not find URI escaped octet") + } + + // Get the octet. + octet := byte((as_hex(parser.buffer, parser.buffer_pos+1) << 4) + as_hex(parser.buffer, parser.buffer_pos+2)) + + // If it is the leading octet, determine the length of the UTF-8 sequence. + if w == 1024 { + w = width(octet) + if w == 0 { + return yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "found an incorrect leading UTF-8 octet") + } + } else { + // Check if the trailing octet is correct. + if octet&0xC0 != 0x80 { + return yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "found an incorrect trailing UTF-8 octet") + } + } + + // Copy the octet and move the pointers. + *s = append(*s, octet) + skip(parser) + skip(parser) + skip(parser) + w-- + } + return true +} + +// Scan a block scalar. +func yaml_parser_scan_block_scalar(parser *yaml_parser_t, token *yaml_token_t, literal bool) bool { + // Eat the indicator '|' or '>'. + start_mark := parser.mark + skip(parser) + + // Scan the additional block scalar indicators. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + // Check for a chomping indicator. + var chomping, increment int + if parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' { + // Set the chomping method and eat the indicator. + if parser.buffer[parser.buffer_pos] == '+' { + chomping = +1 + } else { + chomping = -1 + } + skip(parser) + + // Check for an indentation indicator. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if is_digit(parser.buffer, parser.buffer_pos) { + // Check that the intendation is greater than 0. + if parser.buffer[parser.buffer_pos] == '0' { + yaml_parser_set_scanner_error(parser, "while scanning a block scalar", + start_mark, "found an intendation indicator equal to 0") + return false + } + + // Get the intendation level and eat the indicator. + increment = as_digit(parser.buffer, parser.buffer_pos) + skip(parser) + } + + } else if is_digit(parser.buffer, parser.buffer_pos) { + // Do the same as above, but in the opposite order. + + if parser.buffer[parser.buffer_pos] == '0' { + yaml_parser_set_scanner_error(parser, "while scanning a block scalar", + start_mark, "found an intendation indicator equal to 0") + return false + } + increment = as_digit(parser.buffer, parser.buffer_pos) + skip(parser) + + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' { + if parser.buffer[parser.buffer_pos] == '+' { + chomping = +1 + } else { + chomping = -1 + } + skip(parser) + } + } + + // Eat whitespaces and comments to the end of the line. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + if parser.buffer[parser.buffer_pos] == '#' { + for !is_breakz(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + } + + // Check if we are at the end of the line. + if !is_breakz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a block scalar", + start_mark, "did not find expected comment or line break") + return false + } + + // Eat a line break. + if is_break(parser.buffer, parser.buffer_pos) { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + skip_line(parser) + } + + end_mark := parser.mark + + // Set the intendation level if it was specified. + var indent int + if increment > 0 { + if parser.indent >= 0 { + indent = parser.indent + increment + } else { + indent = increment + } + } + + // Scan the leading line breaks and determine the indentation level if needed. + var s, leading_break, trailing_breaks []byte + if !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) { + return false + } + + // Scan the block scalar content. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + var leading_blank, trailing_blank bool + for parser.mark.column == indent && !is_z(parser.buffer, parser.buffer_pos) { + // We are at the beginning of a non-empty line. + + // Is it a trailing whitespace? + trailing_blank = is_blank(parser.buffer, parser.buffer_pos) + + // Check if we need to fold the leading line break. + if !literal && !leading_blank && !trailing_blank && len(leading_break) > 0 && leading_break[0] == '\n' { + // Do we need to join the lines by space? + if len(trailing_breaks) == 0 { + s = append(s, ' ') + } + } else { + s = append(s, leading_break...) + } + leading_break = leading_break[:0] + + // Append the remaining line breaks. + s = append(s, trailing_breaks...) + trailing_breaks = trailing_breaks[:0] + + // Is it a leading whitespace? + leading_blank = is_blank(parser.buffer, parser.buffer_pos) + + // Consume the current line. + for !is_breakz(parser.buffer, parser.buffer_pos) { + s = read(parser, s) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Consume the line break. + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + + leading_break = read_line(parser, leading_break) + + // Eat the following intendation spaces and line breaks. + if !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) { + return false + } + } + + // Chomp the tail. + if chomping != -1 { + s = append(s, leading_break...) + } + if chomping == 1 { + s = append(s, trailing_breaks...) + } + + // Create a token. + *token = yaml_token_t{ + typ: yaml_SCALAR_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: s, + style: yaml_LITERAL_SCALAR_STYLE, + } + if !literal { + token.style = yaml_FOLDED_SCALAR_STYLE + } + return true +} + +// Scan intendation spaces and line breaks for a block scalar. Determine the +// intendation level if needed. +func yaml_parser_scan_block_scalar_breaks(parser *yaml_parser_t, indent *int, breaks *[]byte, start_mark yaml_mark_t, end_mark *yaml_mark_t) bool { + *end_mark = parser.mark + + // Eat the intendation spaces and line breaks. + max_indent := 0 + for { + // Eat the intendation spaces. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + for (*indent == 0 || parser.mark.column < *indent) && is_space(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + if parser.mark.column > max_indent { + max_indent = parser.mark.column + } + + // Check for a tab character messing the intendation. + if (*indent == 0 || parser.mark.column < *indent) && is_tab(parser.buffer, parser.buffer_pos) { + return yaml_parser_set_scanner_error(parser, "while scanning a block scalar", + start_mark, "found a tab character where an intendation space is expected") + } + + // Have we found a non-empty line? + if !is_break(parser.buffer, parser.buffer_pos) { + break + } + + // Consume the line break. + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + // [Go] Should really be returning breaks instead. + *breaks = read_line(parser, *breaks) + *end_mark = parser.mark + } + + // Determine the indentation level if needed. + if *indent == 0 { + *indent = max_indent + if *indent < parser.indent+1 { + *indent = parser.indent + 1 + } + if *indent < 1 { + *indent = 1 + } + } + return true +} + +// Scan a quoted scalar. +func yaml_parser_scan_flow_scalar(parser *yaml_parser_t, token *yaml_token_t, single bool) bool { + // Eat the left quote. + start_mark := parser.mark + skip(parser) + + // Consume the content of the quoted scalar. + var s, leading_break, trailing_breaks, whitespaces []byte + for { + // Check that there are no document indicators at the beginning of the line. + if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { + return false + } + + if parser.mark.column == 0 && + ((parser.buffer[parser.buffer_pos+0] == '-' && + parser.buffer[parser.buffer_pos+1] == '-' && + parser.buffer[parser.buffer_pos+2] == '-') || + (parser.buffer[parser.buffer_pos+0] == '.' && + parser.buffer[parser.buffer_pos+1] == '.' && + parser.buffer[parser.buffer_pos+2] == '.')) && + is_blankz(parser.buffer, parser.buffer_pos+3) { + yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar", + start_mark, "found unexpected document indicator") + return false + } + + // Check for EOF. + if is_z(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar", + start_mark, "found unexpected end of stream") + return false + } + + // Consume non-blank characters. + leading_blanks := false + for !is_blankz(parser.buffer, parser.buffer_pos) { + if single && parser.buffer[parser.buffer_pos] == '\'' && parser.buffer[parser.buffer_pos+1] == '\'' { + // Is is an escaped single quote. + s = append(s, '\'') + skip(parser) + skip(parser) + + } else if single && parser.buffer[parser.buffer_pos] == '\'' { + // It is a right single quote. + break + } else if !single && parser.buffer[parser.buffer_pos] == '"' { + // It is a right double quote. + break + + } else if !single && parser.buffer[parser.buffer_pos] == '\\' && is_break(parser.buffer, parser.buffer_pos+1) { + // It is an escaped line break. + if parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) { + return false + } + skip(parser) + skip_line(parser) + leading_blanks = true + break + + } else if !single && parser.buffer[parser.buffer_pos] == '\\' { + // It is an escape sequence. + code_length := 0 + + // Check the escape character. + switch parser.buffer[parser.buffer_pos+1] { + case '0': + s = append(s, 0) + case 'a': + s = append(s, '\x07') + case 'b': + s = append(s, '\x08') + case 't', '\t': + s = append(s, '\x09') + case 'n': + s = append(s, '\x0A') + case 'v': + s = append(s, '\x0B') + case 'f': + s = append(s, '\x0C') + case 'r': + s = append(s, '\x0D') + case 'e': + s = append(s, '\x1B') + case ' ': + s = append(s, '\x20') + case '"': + s = append(s, '"') + case '\'': + s = append(s, '\'') + case '\\': + s = append(s, '\\') + case 'N': // NEL (#x85) + s = append(s, '\xC2') + s = append(s, '\x85') + case '_': // #xA0 + s = append(s, '\xC2') + s = append(s, '\xA0') + case 'L': // LS (#x2028) + s = append(s, '\xE2') + s = append(s, '\x80') + s = append(s, '\xA8') + case 'P': // PS (#x2029) + s = append(s, '\xE2') + s = append(s, '\x80') + s = append(s, '\xA9') + case 'x': + code_length = 2 + case 'u': + code_length = 4 + case 'U': + code_length = 8 + default: + yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", + start_mark, "found unknown escape character") + return false + } + + skip(parser) + skip(parser) + + // Consume an arbitrary escape code. + if code_length > 0 { + var value int + + // Scan the character value. + if parser.unread < code_length && !yaml_parser_update_buffer(parser, code_length) { + return false + } + for k := 0; k < code_length; k++ { + if !is_hex(parser.buffer, parser.buffer_pos+k) { + yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", + start_mark, "did not find expected hexdecimal number") + return false + } + value = (value << 4) + as_hex(parser.buffer, parser.buffer_pos+k) + } + + // Check the value and write the character. + if (value >= 0xD800 && value <= 0xDFFF) || value > 0x10FFFF { + yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", + start_mark, "found invalid Unicode character escape code") + return false + } + if value <= 0x7F { + s = append(s, byte(value)) + } else if value <= 0x7FF { + s = append(s, byte(0xC0+(value>>6))) + s = append(s, byte(0x80+(value&0x3F))) + } else if value <= 0xFFFF { + s = append(s, byte(0xE0+(value>>12))) + s = append(s, byte(0x80+((value>>6)&0x3F))) + s = append(s, byte(0x80+(value&0x3F))) + } else { + s = append(s, byte(0xF0+(value>>18))) + s = append(s, byte(0x80+((value>>12)&0x3F))) + s = append(s, byte(0x80+((value>>6)&0x3F))) + s = append(s, byte(0x80+(value&0x3F))) + } + + // Advance the pointer. + for k := 0; k < code_length; k++ { + skip(parser) + } + } + } else { + // It is a non-escaped non-blank character. + s = read(parser, s) + } + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + } + + // Check if we are at the end of the scalar. + if single { + if parser.buffer[parser.buffer_pos] == '\'' { + break + } + } else { + if parser.buffer[parser.buffer_pos] == '"' { + break + } + } + + // Consume blank characters. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) { + if is_blank(parser.buffer, parser.buffer_pos) { + // Consume a space or a tab character. + if !leading_blanks { + whitespaces = read(parser, whitespaces) + } else { + skip(parser) + } + } else { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + + // Check if it is a first line break. + if !leading_blanks { + whitespaces = whitespaces[:0] + leading_break = read_line(parser, leading_break) + leading_blanks = true + } else { + trailing_breaks = read_line(parser, trailing_breaks) + } + } + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Join the whitespaces or fold line breaks. + if leading_blanks { + // Do we need to fold line breaks? + if len(leading_break) > 0 && leading_break[0] == '\n' { + if len(trailing_breaks) == 0 { + s = append(s, ' ') + } else { + s = append(s, trailing_breaks...) + } + } else { + s = append(s, leading_break...) + s = append(s, trailing_breaks...) + } + trailing_breaks = trailing_breaks[:0] + leading_break = leading_break[:0] + } else { + s = append(s, whitespaces...) + whitespaces = whitespaces[:0] + } + } + + // Eat the right quote. + skip(parser) + end_mark := parser.mark + + // Create a token. + *token = yaml_token_t{ + typ: yaml_SCALAR_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: s, + style: yaml_SINGLE_QUOTED_SCALAR_STYLE, + } + if !single { + token.style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + return true +} + +// Scan a plain scalar. +func yaml_parser_scan_plain_scalar(parser *yaml_parser_t, token *yaml_token_t) bool { + + var s, leading_break, trailing_breaks, whitespaces []byte + var leading_blanks bool + var indent = parser.indent + 1 + + start_mark := parser.mark + end_mark := parser.mark + + // Consume the content of the plain scalar. + for { + // Check for a document indicator. + if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { + return false + } + if parser.mark.column == 0 && + ((parser.buffer[parser.buffer_pos+0] == '-' && + parser.buffer[parser.buffer_pos+1] == '-' && + parser.buffer[parser.buffer_pos+2] == '-') || + (parser.buffer[parser.buffer_pos+0] == '.' && + parser.buffer[parser.buffer_pos+1] == '.' && + parser.buffer[parser.buffer_pos+2] == '.')) && + is_blankz(parser.buffer, parser.buffer_pos+3) { + break + } + + // Check for a comment. + if parser.buffer[parser.buffer_pos] == '#' { + break + } + + // Consume non-blank characters. + for !is_blankz(parser.buffer, parser.buffer_pos) { + + // Check for 'x:x' in the flow context. TODO: Fix the test "spec-08-13". + if parser.flow_level > 0 && + parser.buffer[parser.buffer_pos] == ':' && + !is_blankz(parser.buffer, parser.buffer_pos+1) { + yaml_parser_set_scanner_error(parser, "while scanning a plain scalar", + start_mark, "found unexpected ':'") + return false + } + + // Check for indicators that may end a plain scalar. + if (parser.buffer[parser.buffer_pos] == ':' && is_blankz(parser.buffer, parser.buffer_pos+1)) || + (parser.flow_level > 0 && + (parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == ':' || + parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == '[' || + parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' || + parser.buffer[parser.buffer_pos] == '}')) { + break + } + + // Check if we need to join whitespaces and breaks. + if leading_blanks || len(whitespaces) > 0 { + if leading_blanks { + // Do we need to fold line breaks? + if leading_break[0] == '\n' { + if len(trailing_breaks) == 0 { + s = append(s, ' ') + } else { + s = append(s, trailing_breaks...) + } + } else { + s = append(s, leading_break...) + s = append(s, trailing_breaks...) + } + trailing_breaks = trailing_breaks[:0] + leading_break = leading_break[:0] + leading_blanks = false + } else { + s = append(s, whitespaces...) + whitespaces = whitespaces[:0] + } + } + + // Copy the character. + s = read(parser, s) + + end_mark = parser.mark + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + } + + // Is it the end? + if !(is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos)) { + break + } + + // Consume blank characters. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) { + if is_blank(parser.buffer, parser.buffer_pos) { + + // Check for tab character that abuse intendation. + if leading_blanks && parser.mark.column < indent && is_tab(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a plain scalar", + start_mark, "found a tab character that violate intendation") + return false + } + + // Consume a space or a tab character. + if !leading_blanks { + whitespaces = read(parser, whitespaces) + } else { + skip(parser) + } + } else { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + + // Check if it is a first line break. + if !leading_blanks { + whitespaces = whitespaces[:0] + leading_break = read_line(parser, leading_break) + leading_blanks = true + } else { + trailing_breaks = read_line(parser, trailing_breaks) + } + } + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check intendation level. + if parser.flow_level == 0 && parser.mark.column < indent { + break + } + } + + // Create a token. + *token = yaml_token_t{ + typ: yaml_SCALAR_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: s, + style: yaml_PLAIN_SCALAR_STYLE, + } + + // Note that we change the 'simple_key_allowed' flag. + if leading_blanks { + parser.simple_key_allowed = true + } + return true +} diff --git a/src/launchpad.net/goyaml/sorter.go b/src/launchpad.net/goyaml/sorter.go new file mode 100644 index 0000000..e1ee85f --- /dev/null +++ b/src/launchpad.net/goyaml/sorter.go @@ -0,0 +1,104 @@ +package goyaml + +import ( + "reflect" + "unicode" +) + +type keyList []reflect.Value + +func (l keyList) Len() int { return len(l) } +func (l keyList) Swap(i, j int) { l[i], l[j] = l[j], l[i] } +func (l keyList) Less(i, j int) bool { + a := l[i] + b := l[j] + ak := a.Kind() + bk := b.Kind() + for (ak == reflect.Interface || ak == reflect.Ptr) && !a.IsNil() { + a = a.Elem() + ak = a.Kind() + } + for (bk == reflect.Interface || bk == reflect.Ptr) && !b.IsNil() { + b = b.Elem() + bk = b.Kind() + } + af, aok := keyFloat(a) + bf, bok := keyFloat(b) + if aok && bok { + if af != bf { + return af < bf + } + if ak != bk { + return ak < bk + } + return numLess(a, b) + } + if ak != reflect.String || bk != reflect.String { + return ak < bk + } + ar, br := []rune(a.String()), []rune(b.String()) + for i := 0; i < len(ar) && i < len(br); i++ { + if ar[i] == br[i] { + continue + } + al := unicode.IsLetter(ar[i]) + bl := unicode.IsLetter(br[i]) + if al && bl { + return ar[i] < br[i] + } + if al || bl { + return bl + } + var ai, bi int + var an, bn int64 + for ai = i; ai < len(ar) && unicode.IsDigit(ar[ai]); ai++ { + an = an*10 + int64(ar[ai]-'0') + } + for bi = i; bi < len(br) && unicode.IsDigit(br[bi]); bi++ { + bn = bn*10 + int64(br[bi]-'0') + } + if an != bn { + return an < bn + } + if ai != bi { + return ai < bi + } + return ar[i] < br[i] + } + return len(ar) < len(br) +} + +// keyFloat returns a float value for v if it is a number/bool +// and whether it is a number/bool or not. +func keyFloat(v reflect.Value) (f float64, ok bool) { + switch v.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return float64(v.Int()), true + case reflect.Float32, reflect.Float64: + return v.Float(), true + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return float64(v.Uint()), true + case reflect.Bool: + if v.Bool() { + return 1, true + } + return 0, true + } + return 0, false +} + +// numLess returns whether a < b. +// a and b must necessarily have the same kind. +func numLess(a, b reflect.Value) bool { + switch a.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return a.Int() < b.Int() + case reflect.Float32, reflect.Float64: + return a.Float() < b.Float() + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return a.Uint() < b.Uint() + case reflect.Bool: + return !a.Bool() && b.Bool() + } + panic("not a number") +} diff --git a/src/launchpad.net/goyaml/suite_test.go b/src/launchpad.net/goyaml/suite_test.go new file mode 100644 index 0000000..963ab0b --- /dev/null +++ b/src/launchpad.net/goyaml/suite_test.go @@ -0,0 +1,12 @@ +package goyaml_test + +import ( + . "launchpad.net/gocheck" + "testing" +) + +func Test(t *testing.T) { TestingT(t) } + +type S struct{} + +var _ = Suite(&S{}) diff --git a/src/launchpad.net/goyaml/writerc.go b/src/launchpad.net/goyaml/writerc.go new file mode 100644 index 0000000..4809bfb --- /dev/null +++ b/src/launchpad.net/goyaml/writerc.go @@ -0,0 +1,89 @@ +package goyaml + +// Set the writer error and return false. +func yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool { + emitter.error = yaml_WRITER_ERROR + emitter.problem = problem + return false +} + +// Flush the output buffer. +func yaml_emitter_flush(emitter *yaml_emitter_t) bool { + if emitter.write_handler == nil { + panic("write handler not set") + } + + // Check if the buffer is empty. + if emitter.buffer_pos == 0 { + return true + } + + // If the output encoding is UTF-8, we don't need to recode the buffer. + if emitter.encoding == yaml_UTF8_ENCODING { + if err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil { + return yaml_emitter_set_writer_error(emitter, "write error: "+err.Error()) + } + emitter.buffer_pos = 0 + return true + } + + // Recode the buffer into the raw buffer. + var low, high int + if emitter.encoding == yaml_UTF16LE_ENCODING { + low, high = 0, 1 + } else { + high, low = 1, 0 + } + + pos := 0 + for pos < emitter.buffer_pos { + // See the "reader.c" code for more details on UTF-8 encoding. Note + // that we assume that the buffer contains a valid UTF-8 sequence. + + // Read the next UTF-8 character. + octet := emitter.buffer[pos] + + var w int + var value rune + switch { + case octet&0x80 == 0x00: + w, value = 1, rune(octet&0x7F) + case octet&0xE0 == 0xC0: + w, value = 2, rune(octet&0x1F) + case octet&0xF0 == 0xE0: + w, value = 3, rune(octet&0x0F) + case octet&0xF8 == 0xF0: + w, value = 4, rune(octet&0x07) + } + for k := 1; k < w; k++ { + octet = emitter.buffer[pos+k] + value = (value << 6) + (rune(octet) & 0x3F) + } + pos += w + + // Write the character. + if value < 0x10000 { + var b [2]byte + b[high] = byte(value >> 8) + b[low] = byte(value & 0xFF) + emitter.raw_buffer = append(emitter.raw_buffer, b[0], b[1]) + } else { + // Write the character using a surrogate pair (check "reader.c"). + var b [4]byte + value -= 0x10000 + b[high] = byte(0xD8 + (value >> 18)) + b[low] = byte((value >> 10) & 0xFF) + b[high+2] = byte(0xDC + ((value >> 8) & 0xFF)) + b[low+2] = byte(value & 0xFF) + emitter.raw_buffer = append(emitter.raw_buffer, b[0], b[1], b[2], b[3]) + } + } + + // Write the raw buffer. + if err := emitter.write_handler(emitter, emitter.raw_buffer); err != nil { + return yaml_emitter_set_writer_error(emitter, "write error: "+err.Error()) + } + emitter.buffer_pos = 0 + emitter.raw_buffer = emitter.raw_buffer[:0] + return true +} diff --git a/src/launchpad.net/goyaml/yamlh.go b/src/launchpad.net/goyaml/yamlh.go new file mode 100644 index 0000000..1fea365 --- /dev/null +++ b/src/launchpad.net/goyaml/yamlh.go @@ -0,0 +1,712 @@ +package goyaml + +import ( + "io" +) + +// The version directive data. +type yaml_version_directive_t struct { + major int8 // The major version number. + minor int8 // The minor version number. +} + +// The tag directive data. +type yaml_tag_directive_t struct { + handle []byte // The tag handle. + prefix []byte // The tag prefix. +} + +type yaml_encoding_t int + +// The stream encoding. +const ( + // Let the parser choose the encoding. + yaml_ANY_ENCODING yaml_encoding_t = iota + + yaml_UTF8_ENCODING // The default UTF-8 encoding. + yaml_UTF16LE_ENCODING // The UTF-16-LE encoding with BOM. + yaml_UTF16BE_ENCODING // The UTF-16-BE encoding with BOM. +) + +type yaml_break_t int + +// Line break types. +const ( + // Let the parser choose the break type. + yaml_ANY_BREAK yaml_break_t = iota + + yaml_CR_BREAK // Use CR for line breaks (Mac style). + yaml_LN_BREAK // Use LN for line breaks (Unix style). + yaml_CRLN_BREAK // Use CR LN for line breaks (DOS style). +) + +type yaml_error_type_t int + +// Many bad things could happen with the parser and emitter. +const ( + // No error is produced. + yaml_NO_ERROR yaml_error_type_t = iota + + yaml_MEMORY_ERROR // Cannot allocate or reallocate a block of memory. + yaml_READER_ERROR // Cannot read or decode the input stream. + yaml_SCANNER_ERROR // Cannot scan the input stream. + yaml_PARSER_ERROR // Cannot parse the input stream. + yaml_COMPOSER_ERROR // Cannot compose a YAML document. + yaml_WRITER_ERROR // Cannot write to the output stream. + yaml_EMITTER_ERROR // Cannot emit a YAML stream. +) + +// The pointer position. +type yaml_mark_t struct { + index int // The position index. + line int // The position line. + column int // The position column. +} + +// Node Styles + +type yaml_style_t int8 + +type yaml_scalar_style_t yaml_style_t + +// Scalar styles. +const ( + // Let the emitter choose the style. + yaml_ANY_SCALAR_STYLE yaml_scalar_style_t = iota + + yaml_PLAIN_SCALAR_STYLE // The plain scalar style. + yaml_SINGLE_QUOTED_SCALAR_STYLE // The single-quoted scalar style. + yaml_DOUBLE_QUOTED_SCALAR_STYLE // The double-quoted scalar style. + yaml_LITERAL_SCALAR_STYLE // The literal scalar style. + yaml_FOLDED_SCALAR_STYLE // The folded scalar style. +) + +type yaml_sequence_style_t yaml_style_t + +// Sequence styles. +const ( + // Let the emitter choose the style. + yaml_ANY_SEQUENCE_STYLE yaml_sequence_style_t = iota + + yaml_BLOCK_SEQUENCE_STYLE // The block sequence style. + yaml_FLOW_SEQUENCE_STYLE // The flow sequence style. +) + +type yaml_mapping_style_t yaml_style_t + +// Mapping styles. +const ( + // Let the emitter choose the style. + yaml_ANY_MAPPING_STYLE yaml_mapping_style_t = iota + + yaml_BLOCK_MAPPING_STYLE // The block mapping style. + yaml_FLOW_MAPPING_STYLE // The flow mapping style. +) + +// Tokens + +type yaml_token_type_t int + +// Token types. +const ( + // An empty token. + yaml_NO_TOKEN yaml_token_type_t = iota + + yaml_STREAM_START_TOKEN // A STREAM-START token. + yaml_STREAM_END_TOKEN // A STREAM-END token. + + yaml_VERSION_DIRECTIVE_TOKEN // A VERSION-DIRECTIVE token. + yaml_TAG_DIRECTIVE_TOKEN // A TAG-DIRECTIVE token. + yaml_DOCUMENT_START_TOKEN // A DOCUMENT-START token. + yaml_DOCUMENT_END_TOKEN // A DOCUMENT-END token. + + yaml_BLOCK_SEQUENCE_START_TOKEN // A BLOCK-SEQUENCE-START token. + yaml_BLOCK_MAPPING_START_TOKEN // A BLOCK-SEQUENCE-END token. + yaml_BLOCK_END_TOKEN // A BLOCK-END token. + + yaml_FLOW_SEQUENCE_START_TOKEN // A FLOW-SEQUENCE-START token. + yaml_FLOW_SEQUENCE_END_TOKEN // A FLOW-SEQUENCE-END token. + yaml_FLOW_MAPPING_START_TOKEN // A FLOW-MAPPING-START token. + yaml_FLOW_MAPPING_END_TOKEN // A FLOW-MAPPING-END token. + + yaml_BLOCK_ENTRY_TOKEN // A BLOCK-ENTRY token. + yaml_FLOW_ENTRY_TOKEN // A FLOW-ENTRY token. + yaml_KEY_TOKEN // A KEY token. + yaml_VALUE_TOKEN // A VALUE token. + + yaml_ALIAS_TOKEN // An ALIAS token. + yaml_ANCHOR_TOKEN // An ANCHOR token. + yaml_TAG_TOKEN // A TAG token. + yaml_SCALAR_TOKEN // A SCALAR token. +) + +func (tt yaml_token_type_t) String() string { + switch tt { + case yaml_NO_TOKEN: + return "yaml_NO_TOKEN" + case yaml_STREAM_START_TOKEN: + return "yaml_STREAM_START_TOKEN" + case yaml_STREAM_END_TOKEN: + return "yaml_STREAM_END_TOKEN" + case yaml_VERSION_DIRECTIVE_TOKEN: + return "yaml_VERSION_DIRECTIVE_TOKEN" + case yaml_TAG_DIRECTIVE_TOKEN: + return "yaml_TAG_DIRECTIVE_TOKEN" + case yaml_DOCUMENT_START_TOKEN: + return "yaml_DOCUMENT_START_TOKEN" + case yaml_DOCUMENT_END_TOKEN: + return "yaml_DOCUMENT_END_TOKEN" + case yaml_BLOCK_SEQUENCE_START_TOKEN: + return "yaml_BLOCK_SEQUENCE_START_TOKEN" + case yaml_BLOCK_MAPPING_START_TOKEN: + return "yaml_BLOCK_MAPPING_START_TOKEN" + case yaml_BLOCK_END_TOKEN: + return "yaml_BLOCK_END_TOKEN" + case yaml_FLOW_SEQUENCE_START_TOKEN: + return "yaml_FLOW_SEQUENCE_START_TOKEN" + case yaml_FLOW_SEQUENCE_END_TOKEN: + return "yaml_FLOW_SEQUENCE_END_TOKEN" + case yaml_FLOW_MAPPING_START_TOKEN: + return "yaml_FLOW_MAPPING_START_TOKEN" + case yaml_FLOW_MAPPING_END_TOKEN: + return "yaml_FLOW_MAPPING_END_TOKEN" + case yaml_BLOCK_ENTRY_TOKEN: + return "yaml_BLOCK_ENTRY_TOKEN" + case yaml_FLOW_ENTRY_TOKEN: + return "yaml_FLOW_ENTRY_TOKEN" + case yaml_KEY_TOKEN: + return "yaml_KEY_TOKEN" + case yaml_VALUE_TOKEN: + return "yaml_VALUE_TOKEN" + case yaml_ALIAS_TOKEN: + return "yaml_ALIAS_TOKEN" + case yaml_ANCHOR_TOKEN: + return "yaml_ANCHOR_TOKEN" + case yaml_TAG_TOKEN: + return "yaml_TAG_TOKEN" + case yaml_SCALAR_TOKEN: + return "yaml_SCALAR_TOKEN" + } + return "" +} + +// The token structure. +type yaml_token_t struct { + // The token type. + typ yaml_token_type_t + + // The start/end of the token. + start_mark, end_mark yaml_mark_t + + // The stream encoding (for yaml_STREAM_START_TOKEN). + encoding yaml_encoding_t + + // The alias/anchor/scalar value or tag/tag directive handle + // (for yaml_ALIAS_TOKEN, yaml_ANCHOR_TOKEN, yaml_SCALAR_TOKEN, yaml_TAG_TOKEN, yaml_TAG_DIRECTIVE_TOKEN). + value []byte + + // The tag suffix (for yaml_TAG_TOKEN). + suffix []byte + + // The tag directive prefix (for yaml_TAG_DIRECTIVE_TOKEN). + prefix []byte + + // The scalar style (for yaml_SCALAR_TOKEN). + style yaml_scalar_style_t + + // The version directive major/minor (for yaml_VERSION_DIRECTIVE_TOKEN). + major, minor int8 +} + +// Events + +type yaml_event_type_t int8 + +// Event types. +const ( + // An empty event. + yaml_NO_EVENT yaml_event_type_t = iota + + yaml_STREAM_START_EVENT // A STREAM-START event. + yaml_STREAM_END_EVENT // A STREAM-END event. + yaml_DOCUMENT_START_EVENT // A DOCUMENT-START event. + yaml_DOCUMENT_END_EVENT // A DOCUMENT-END event. + yaml_ALIAS_EVENT // An ALIAS event. + yaml_SCALAR_EVENT // A SCALAR event. + yaml_SEQUENCE_START_EVENT // A SEQUENCE-START event. + yaml_SEQUENCE_END_EVENT // A SEQUENCE-END event. + yaml_MAPPING_START_EVENT // A MAPPING-START event. + yaml_MAPPING_END_EVENT // A MAPPING-END event. +) + +// The event structure. +type yaml_event_t struct { + + // The event type. + typ yaml_event_type_t + + // The start and end of the event. + start_mark, end_mark yaml_mark_t + + // The document encoding (for yaml_STREAM_START_EVENT). + encoding yaml_encoding_t + + // The version directive (for yaml_DOCUMENT_START_EVENT). + version_directive *yaml_version_directive_t + + // The list of tag directives (for yaml_DOCUMENT_START_EVENT). + tag_directives []yaml_tag_directive_t + + // The anchor (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_ALIAS_EVENT). + anchor []byte + + // The tag (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). + tag []byte + + // The scalar value (for yaml_SCALAR_EVENT). + value []byte + + // Is the document start/end indicator implicit, or the tag optional? + // (for yaml_DOCUMENT_START_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_SCALAR_EVENT). + implicit bool + + // Is the tag optional for any non-plain style? (for yaml_SCALAR_EVENT). + quoted_implicit bool + + // The style (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). + style yaml_style_t +} + +func (e *yaml_event_t) scalar_style() yaml_scalar_style_t { return yaml_scalar_style_t(e.style) } +func (e *yaml_event_t) sequence_style() yaml_sequence_style_t { return yaml_sequence_style_t(e.style) } +func (e *yaml_event_t) mapping_style() yaml_mapping_style_t { return yaml_mapping_style_t(e.style) } + +// Nodes + +const ( + yaml_NULL_TAG = "tag:yaml.org,2002:null" // The tag !!null with the only possible value: null. + yaml_BOOL_TAG = "tag:yaml.org,2002:bool" // The tag !!bool with the values: true and false. + yaml_STR_TAG = "tag:yaml.org,2002:str" // The tag !!str for string values. + yaml_INT_TAG = "tag:yaml.org,2002:int" // The tag !!int for integer values. + yaml_FLOAT_TAG = "tag:yaml.org,2002:float" // The tag !!float for float values. + yaml_TIMESTAMP_TAG = "tag:yaml.org,2002:timestamp" // The tag !!timestamp for date and time values. + + yaml_SEQ_TAG = "tag:yaml.org,2002:seq" // The tag !!seq is used to denote sequences. + yaml_MAP_TAG = "tag:yaml.org,2002:map" // The tag !!map is used to denote mapping. + + yaml_DEFAULT_SCALAR_TAG = yaml_STR_TAG // The default scalar tag is !!str. + yaml_DEFAULT_SEQUENCE_TAG = yaml_SEQ_TAG // The default sequence tag is !!seq. + yaml_DEFAULT_MAPPING_TAG = yaml_MAP_TAG // The default mapping tag is !!map. +) + +type yaml_node_type_t int + +// Node types. +const ( + // An empty node. + yaml_NO_NODE yaml_node_type_t = iota + + yaml_SCALAR_NODE // A scalar node. + yaml_SEQUENCE_NODE // A sequence node. + yaml_MAPPING_NODE // A mapping node. +) + +// An element of a sequence node. +type yaml_node_item_t int + +// An element of a mapping node. +type yaml_node_pair_t struct { + key int // The key of the element. + value int // The value of the element. +} + +// The node structure. +type yaml_node_t struct { + typ yaml_node_type_t // The node type. + tag []byte // The node tag. + + // The node data. + + // The scalar parameters (for yaml_SCALAR_NODE). + scalar struct { + value []byte // The scalar value. + length int // The length of the scalar value. + style yaml_scalar_style_t // The scalar style. + } + + // The sequence parameters (for YAML_SEQUENCE_NODE). + sequence struct { + items_data []yaml_node_item_t // The stack of sequence items. + style yaml_sequence_style_t // The sequence style. + } + + // The mapping parameters (for yaml_MAPPING_NODE). + mapping struct { + pairs_data []yaml_node_pair_t // The stack of mapping pairs (key, value). + pairs_start *yaml_node_pair_t // The beginning of the stack. + pairs_end *yaml_node_pair_t // The end of the stack. + pairs_top *yaml_node_pair_t // The top of the stack. + style yaml_mapping_style_t // The mapping style. + } + + start_mark yaml_mark_t // The beginning of the node. + end_mark yaml_mark_t // The end of the node. + +} + +// The document structure. +type yaml_document_t struct { + + // The document nodes. + nodes []yaml_node_t + + // The version directive. + version_directive *yaml_version_directive_t + + // The list of tag directives. + tag_directives_data []yaml_tag_directive_t + tag_directives_start int // The beginning of the tag directives list. + tag_directives_end int // The end of the tag directives list. + + start_implicit int // Is the document start indicator implicit? + end_implicit int // Is the document end indicator implicit? + + // The start/end of the document. + start_mark, end_mark yaml_mark_t +} + +// The prototype of a read handler. +// +// The read handler is called when the parser needs to read more bytes from the +// source. The handler should write not more than size bytes to the buffer. +// The number of written bytes should be set to the size_read variable. +// +// [in,out] data A pointer to an application data specified by +// yaml_parser_set_input(). +// [out] buffer The buffer to write the data from the source. +// [in] size The size of the buffer. +// [out] size_read The actual number of bytes read from the source. +// +// On success, the handler should return 1. If the handler failed, +// the returned value should be 0. On EOF, the handler should set the +// size_read to 0 and return 1. +type yaml_read_handler_t func(parser *yaml_parser_t, buffer []byte) (n int, err error) + +// This structure holds information about a potential simple key. +type yaml_simple_key_t struct { + possible bool // Is a simple key possible? + required bool // Is a simple key required? + token_number int // The number of the token. + mark yaml_mark_t // The position mark. +} + +// The states of the parser. +type yaml_parser_state_t int + +const ( + yaml_PARSE_STREAM_START_STATE yaml_parser_state_t = iota + + yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE // Expect the beginning of an implicit document. + yaml_PARSE_DOCUMENT_START_STATE // Expect DOCUMENT-START. + yaml_PARSE_DOCUMENT_CONTENT_STATE // Expect the content of a document. + yaml_PARSE_DOCUMENT_END_STATE // Expect DOCUMENT-END. + yaml_PARSE_BLOCK_NODE_STATE // Expect a block node. + yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE // Expect a block node or indentless sequence. + yaml_PARSE_FLOW_NODE_STATE // Expect a flow node. + yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE // Expect the first entry of a block sequence. + yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE // Expect an entry of a block sequence. + yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE // Expect an entry of an indentless sequence. + yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE // Expect the first key of a block mapping. + yaml_PARSE_BLOCK_MAPPING_KEY_STATE // Expect a block mapping key. + yaml_PARSE_BLOCK_MAPPING_VALUE_STATE // Expect a block mapping value. + yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE // Expect the first entry of a flow sequence. + yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE // Expect an entry of a flow sequence. + yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE // Expect a key of an ordered mapping. + yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE // Expect a value of an ordered mapping. + yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE // Expect the and of an ordered mapping entry. + yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE // Expect the first key of a flow mapping. + yaml_PARSE_FLOW_MAPPING_KEY_STATE // Expect a key of a flow mapping. + yaml_PARSE_FLOW_MAPPING_VALUE_STATE // Expect a value of a flow mapping. + yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE // Expect an empty value of a flow mapping. + yaml_PARSE_END_STATE // Expect nothing. +) + +func (ps yaml_parser_state_t) String() string { + switch ps { + case yaml_PARSE_STREAM_START_STATE: + return "yaml_PARSE_STREAM_START_STATE" + case yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE: + return "yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE" + case yaml_PARSE_DOCUMENT_START_STATE: + return "yaml_PARSE_DOCUMENT_START_STATE" + case yaml_PARSE_DOCUMENT_CONTENT_STATE: + return "yaml_PARSE_DOCUMENT_CONTENT_STATE" + case yaml_PARSE_DOCUMENT_END_STATE: + return "yaml_PARSE_DOCUMENT_END_STATE" + case yaml_PARSE_BLOCK_NODE_STATE: + return "yaml_PARSE_BLOCK_NODE_STATE" + case yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE: + return "yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE" + case yaml_PARSE_FLOW_NODE_STATE: + return "yaml_PARSE_FLOW_NODE_STATE" + case yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE: + return "yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE" + case yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE: + return "yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE" + case yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE: + return "yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE" + case yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE: + return "yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE" + case yaml_PARSE_BLOCK_MAPPING_KEY_STATE: + return "yaml_PARSE_BLOCK_MAPPING_KEY_STATE" + case yaml_PARSE_BLOCK_MAPPING_VALUE_STATE: + return "yaml_PARSE_BLOCK_MAPPING_VALUE_STATE" + case yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE" + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE" + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE" + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE" + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE" + case yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE: + return "yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE" + case yaml_PARSE_FLOW_MAPPING_KEY_STATE: + return "yaml_PARSE_FLOW_MAPPING_KEY_STATE" + case yaml_PARSE_FLOW_MAPPING_VALUE_STATE: + return "yaml_PARSE_FLOW_MAPPING_VALUE_STATE" + case yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE: + return "yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE" + case yaml_PARSE_END_STATE: + return "yaml_PARSE_END_STATE" + } + return "" +} + +// This structure holds aliases data. +type yaml_alias_data_t struct { + anchor []byte // The anchor. + index int // The node id. + mark yaml_mark_t // The anchor mark. +} + +// The parser structure. +// +// All members are internal. Manage the structure using the +// yaml_parser_ family of functions. +type yaml_parser_t struct { + + // Error handling + + error yaml_error_type_t // Error type. + + problem string // Error description. + + // The byte about which the problem occured. + problem_offset int + problem_value int + problem_mark yaml_mark_t + + // The error context. + context string + context_mark yaml_mark_t + + // Reader stuff + + read_handler yaml_read_handler_t // Read handler. + + input_file io.Reader // File input data. + input []byte // String input data. + input_pos int + + eof bool // EOF flag + + buffer []byte // The working buffer. + buffer_pos int // The current position of the buffer. + + unread int // The number of unread characters in the buffer. + + raw_buffer []byte // The raw buffer. + raw_buffer_pos int // The current position of the buffer. + + encoding yaml_encoding_t // The input encoding. + + offset int // The offset of the current position (in bytes). + mark yaml_mark_t // The mark of the current position. + + // Scanner stuff + + stream_start_produced bool // Have we started to scan the input stream? + stream_end_produced bool // Have we reached the end of the input stream? + + flow_level int // The number of unclosed '[' and '{' indicators. + + tokens []yaml_token_t // The tokens queue. + tokens_head int // The head of the tokens queue. + tokens_parsed int // The number of tokens fetched from the queue. + token_available bool // Does the tokens queue contain a token ready for dequeueing. + + indent int // The current indentation level. + indents []int // The indentation levels stack. + + simple_key_allowed bool // May a simple key occur at the current position? + simple_keys []yaml_simple_key_t // The stack of simple keys. + + // Parser stuff + + state yaml_parser_state_t // The current parser state. + states []yaml_parser_state_t // The parser states stack. + marks []yaml_mark_t // The stack of marks. + tag_directives []yaml_tag_directive_t // The list of TAG directives. + + // Dumper stuff + + aliases []yaml_alias_data_t // The alias data. + + document *yaml_document_t // The currently parsed document. +} + +// Emitter Definitions + +// The prototype of a write handler. +// +// The write handler is called when the emitter needs to flush the accumulated +// characters to the output. The handler should write @a size bytes of the +// @a buffer to the output. +// +// @param[in,out] data A pointer to an application data specified by +// yaml_emitter_set_output(). +// @param[in] buffer The buffer with bytes to be written. +// @param[in] size The size of the buffer. +// +// @returns On success, the handler should return @c 1. If the handler failed, +// the returned value should be @c 0. +// +type yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error + +type yaml_emitter_state_t int + +// The emitter states. +const ( + // Expect STREAM-START. + yaml_EMIT_STREAM_START_STATE yaml_emitter_state_t = iota + + yaml_EMIT_FIRST_DOCUMENT_START_STATE // Expect the first DOCUMENT-START or STREAM-END. + yaml_EMIT_DOCUMENT_START_STATE // Expect DOCUMENT-START or STREAM-END. + yaml_EMIT_DOCUMENT_CONTENT_STATE // Expect the content of a document. + yaml_EMIT_DOCUMENT_END_STATE // Expect DOCUMENT-END. + yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE // Expect the first item of a flow sequence. + yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE // Expect an item of a flow sequence. + yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE // Expect the first key of a flow mapping. + yaml_EMIT_FLOW_MAPPING_KEY_STATE // Expect a key of a flow mapping. + yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a flow mapping. + yaml_EMIT_FLOW_MAPPING_VALUE_STATE // Expect a value of a flow mapping. + yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE // Expect the first item of a block sequence. + yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE // Expect an item of a block sequence. + yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE // Expect the first key of a block mapping. + yaml_EMIT_BLOCK_MAPPING_KEY_STATE // Expect the key of a block mapping. + yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a block mapping. + yaml_EMIT_BLOCK_MAPPING_VALUE_STATE // Expect a value of a block mapping. + yaml_EMIT_END_STATE // Expect nothing. +) + +// The emitter structure. +// +// All members are internal. Manage the structure using the @c yaml_emitter_ +// family of functions. +type yaml_emitter_t struct { + + // Error handling + + error yaml_error_type_t // Error type. + problem string // Error description. + + // Writer stuff + + write_handler yaml_write_handler_t // Write handler. + + output_buffer *[]byte // String output data. + output_file io.Writer // File output data. + + buffer []byte // The working buffer. + buffer_pos int // The current position of the buffer. + + raw_buffer []byte // The raw buffer. + raw_buffer_pos int // The current position of the buffer. + + encoding yaml_encoding_t // The stream encoding. + + // Emitter stuff + + canonical bool // If the output is in the canonical style? + best_indent int // The number of indentation spaces. + best_width int // The preferred width of the output lines. + unicode bool // Allow unescaped non-ASCII characters? + line_break yaml_break_t // The preferred line break. + + state yaml_emitter_state_t // The current emitter state. + states []yaml_emitter_state_t // The stack of states. + + events []yaml_event_t // The event queue. + events_head int // The head of the event queue. + + indents []int // The stack of indentation levels. + + tag_directives []yaml_tag_directive_t // The list of tag directives. + + indent int // The current indentation level. + + flow_level int // The current flow level. + + root_context bool // Is it the document root context? + sequence_context bool // Is it a sequence context? + mapping_context bool // Is it a mapping context? + simple_key_context bool // Is it a simple mapping key context? + + line int // The current line. + column int // The current column. + whitespace bool // If the last character was a whitespace? + indention bool // If the last character was an indentation character (' ', '-', '?', ':')? + open_ended bool // If an explicit document end is required? + + // Anchor analysis. + anchor_data struct { + anchor []byte // The anchor value. + alias bool // Is it an alias? + } + + // Tag analysis. + tag_data struct { + handle []byte // The tag handle. + suffix []byte // The tag suffix. + } + + // Scalar analysis. + scalar_data struct { + value []byte // The scalar value. + multiline bool // Does the scalar contain line breaks? + flow_plain_allowed bool // Can the scalar be expessed in the flow plain style? + block_plain_allowed bool // Can the scalar be expressed in the block plain style? + single_quoted_allowed bool // Can the scalar be expressed in the single quoted style? + block_allowed bool // Can the scalar be expressed in the literal or folded styles? + style yaml_scalar_style_t // The output style. + } + + // Dumper stuff + + opened bool // If the stream was already opened? + closed bool // If the stream was already closed? + + // The information associated with the document nodes. + anchors *struct { + references int // The number of references. + anchor int // The anchor id. + serialized bool // If the node has been emitted? + } + + last_anchor_id int // The last assigned anchor id. + + document *yaml_document_t // The currently emitted document. +} diff --git a/src/launchpad.net/goyaml/yamlprivateh.go b/src/launchpad.net/goyaml/yamlprivateh.go new file mode 100644 index 0000000..1c0b23d --- /dev/null +++ b/src/launchpad.net/goyaml/yamlprivateh.go @@ -0,0 +1,173 @@ +package goyaml + +const ( + // The size of the input raw buffer. + input_raw_buffer_size = 512 + + // The size of the input buffer. + // It should be possible to decode the whole raw buffer. + input_buffer_size = input_raw_buffer_size * 3 + + // The size of the output buffer. + output_buffer_size = 128 + + // The size of the output raw buffer. + // It should be possible to encode the whole output buffer. + output_raw_buffer_size = (output_buffer_size*2 + 2) + + // The size of other stacks and queues. + initial_stack_size = 16 + initial_queue_size = 16 + initial_string_size = 16 +) + +// Check if the character at the specified position is an alphabetical +// character, a digit, '_', or '-'. +func is_alpha(b []byte, i int) bool { + return b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'Z' || b[i] >= 'a' && b[i] <= 'z' || b[i] == '_' || b[i] == '-' +} + +// Check if the character at the specified position is a digit. +func is_digit(b []byte, i int) bool { + return b[i] >= '0' && b[i] <= '9' +} + +// Get the value of a digit. +func as_digit(b []byte, i int) int { + return int(b[i]) - '0' +} + +// Check if the character at the specified position is a hex-digit. +func is_hex(b []byte, i int) bool { + return b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'F' || b[i] >= 'a' && b[i] <= 'f' +} + +// Get the value of a hex-digit. +func as_hex(b []byte, i int) int { + bi := b[i] + if bi >= 'A' && bi <= 'F' { + return int(bi) - 'A' + 10 + } + if bi >= 'a' && bi <= 'f' { + return int(bi) - 'a' + 10 + } + return int(bi) - '0' +} + +// Check if the character is ASCII. +func is_ascii(b []byte, i int) bool { + return b[i] <= 0x7F +} + +// Check if the character at the start of the buffer can be printed unescaped. +func is_printable(b []byte, i int) bool { + return ((b[i] == 0x0A) || // . == #x0A + (b[i] >= 0x20 && b[i] <= 0x7E) || // #x20 <= . <= #x7E + (b[i] == 0xC2 && b[i+1] >= 0xA0) || // #0xA0 <= . <= #xD7FF + (b[i] > 0xC2 && b[i] < 0xED) || + (b[i] == 0xED && b[i+1] < 0xA0) || + (b[i] == 0xEE) || + (b[i] == 0xEF && // #xE000 <= . <= #xFFFD + !(b[i+1] == 0xBB && b[i+2] == 0xBF) && // && . != #xFEFF + !(b[i+1] == 0xBF && (b[i+2] == 0xBE || b[i+2] == 0xBF)))) +} + +// Check if the character at the specified position is NUL. +func is_z(b []byte, i int) bool { + return b[i] == 0x00 +} + +// Check if the beginning of the buffer is a BOM. +func is_bom(b []byte, i int) bool { + return b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF +} + +// Check if the character at the specified position is space. +func is_space(b []byte, i int) bool { + return b[i] == ' ' +} + +// Check if the character at the specified position is tab. +func is_tab(b []byte, i int) bool { + return b[i] == '\t' +} + +// Check if the character at the specified position is blank (space or tab). +func is_blank(b []byte, i int) bool { + //return is_space(b, i) || is_tab(b, i) + return b[i] == ' ' || b[i] == '\t' +} + +// Check if the character at the specified position is a line break. +func is_break(b []byte, i int) bool { + return (b[i] == '\r' || // CR (#xD) + b[i] == '\n' || // LF (#xA) + b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9) // PS (#x2029) +} + +func is_crlf(b []byte, i int) bool { + return b[i] == '\r' && b[i+1] == '\n' +} + +// Check if the character is a line break or NUL. +func is_breakz(b []byte, i int) bool { + //return is_break(b, i) || is_z(b, i) + return ( // is_break: + b[i] == '\r' || // CR (#xD) + b[i] == '\n' || // LF (#xA) + b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) + // is_z: + b[i] == 0) +} + +// Check if the character is a line break, space, or NUL. +func is_spacez(b []byte, i int) bool { + //return is_space(b, i) || is_breakz(b, i) + return ( // is_space: + b[i] == ' ' || + // is_breakz: + b[i] == '\r' || // CR (#xD) + b[i] == '\n' || // LF (#xA) + b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) + b[i] == 0) +} + +// Check if the character is a line break, space, tab, or NUL. +func is_blankz(b []byte, i int) bool { + //return is_blank(b, i) || is_breakz(b, i) + return ( // is_blank: + b[i] == ' ' || b[i] == '\t' || + // is_breakz: + b[i] == '\r' || // CR (#xD) + b[i] == '\n' || // LF (#xA) + b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) + b[i] == 0) +} + +// Determine the width of the character. +func width(b byte) int { + // Don't replace these by a switch without first + // confirming that it is being inlined. + if b&0x80 == 0x00 { + return 1 + } + if b&0xE0 == 0xC0 { + return 2 + } + if b&0xF0 == 0xE0 { + return 3 + } + if b&0xF8 == 0xF0 { + return 4 + } + return 0 + +}