Merge pull request #1509 from selansen/master

Data Path Port configuration support
This commit is contained in:
Silvin Lubecki 2018-11-28 17:10:39 +01:00 committed by GitHub
commit 69bd2728c4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 746 additions and 439 deletions

View File

@ -20,6 +20,7 @@ type initOptions struct {
// Not a NodeAddrOption because it has no default port. // Not a NodeAddrOption because it has no default port.
advertiseAddr string advertiseAddr string
dataPathAddr string dataPathAddr string
dataPathPort uint32
forceNewCluster bool forceNewCluster bool
availability string availability string
defaultAddrPools []net.IPNet defaultAddrPools []net.IPNet
@ -45,6 +46,8 @@ func newInitCommand(dockerCli command.Cli) *cobra.Command {
flags.StringVar(&opts.advertiseAddr, flagAdvertiseAddr, "", "Advertised address (format: <ip|interface>[:port])") flags.StringVar(&opts.advertiseAddr, flagAdvertiseAddr, "", "Advertised address (format: <ip|interface>[:port])")
flags.StringVar(&opts.dataPathAddr, flagDataPathAddr, "", "Address or interface to use for data path traffic (format: <ip|interface>)") flags.StringVar(&opts.dataPathAddr, flagDataPathAddr, "", "Address or interface to use for data path traffic (format: <ip|interface>)")
flags.SetAnnotation(flagDataPathAddr, "version", []string{"1.31"}) flags.SetAnnotation(flagDataPathAddr, "version", []string{"1.31"})
flags.Uint32Var(&opts.dataPathPort, flagDataPathPort, 0, "Port number to use for data path traffic (1024 - 49151). If no value is set or is set to 0, the default port (4789) is used.")
flags.SetAnnotation(flagDataPathPort, "version", []string{"1.40"})
flags.BoolVar(&opts.forceNewCluster, "force-new-cluster", false, "Force create a new cluster from current state") flags.BoolVar(&opts.forceNewCluster, "force-new-cluster", false, "Force create a new cluster from current state")
flags.BoolVar(&opts.autolock, flagAutolock, false, "Enable manager autolocking (requiring an unlock key to start a stopped manager)") flags.BoolVar(&opts.autolock, flagAutolock, false, "Enable manager autolocking (requiring an unlock key to start a stopped manager)")
flags.StringVar(&opts.availability, flagAvailability, "active", `Availability of the node ("active"|"pause"|"drain")`) flags.StringVar(&opts.availability, flagAvailability, "active", `Availability of the node ("active"|"pause"|"drain")`)
@ -69,6 +72,7 @@ func runInit(dockerCli command.Cli, flags *pflag.FlagSet, opts initOptions) erro
ListenAddr: opts.listenAddr.String(), ListenAddr: opts.listenAddr.String(),
AdvertiseAddr: opts.advertiseAddr, AdvertiseAddr: opts.advertiseAddr,
DataPathAddr: opts.dataPathAddr, DataPathAddr: opts.dataPathAddr,
DataPathPort: opts.dataPathPort,
DefaultAddrPool: defaultAddrPool, DefaultAddrPool: defaultAddrPool,
ForceNewCluster: opts.forceNewCluster, ForceNewCluster: opts.forceNewCluster,
Spec: opts.swarmOptions.ToSpec(flags), Spec: opts.swarmOptions.ToSpec(flags),

View File

@ -22,6 +22,7 @@ const (
flagListenAddr = "listen-addr" flagListenAddr = "listen-addr"
flagAdvertiseAddr = "advertise-addr" flagAdvertiseAddr = "advertise-addr"
flagDataPathAddr = "data-path-addr" flagDataPathAddr = "data-path-addr"
flagDataPathPort = "data-path-port"
flagDefaultAddrPool = "default-addr-pool" flagDefaultAddrPool = "default-addr-pool"
flagDefaultAddrPoolMaskLength = "default-addr-pool-mask-length" flagDefaultAddrPoolMaskLength = "default-addr-pool-mask-length"
flagQuiet = "quiet" flagQuiet = "quiet"

View File

@ -235,6 +235,9 @@ func printSwarmInfo(dockerCli command.Cli, info types.Info) {
fmt.Fprintln(dockerCli.Out(), " Default Address Pool:", strAddrPool.String()) fmt.Fprintln(dockerCli.Out(), " Default Address Pool:", strAddrPool.String())
fmt.Fprintln(dockerCli.Out(), " SubnetSize:", info.Swarm.Cluster.SubnetSize) fmt.Fprintln(dockerCli.Out(), " SubnetSize:", info.Swarm.Cluster.SubnetSize)
} }
if info.Swarm.Cluster.DataPathPort > 0 {
fmt.Fprintln(dockerCli.Out(), " Data Path Port:", info.Swarm.Cluster.DataPathPort)
}
fmt.Fprintln(dockerCli.Out(), " Orchestration:") fmt.Fprintln(dockerCli.Out(), " Orchestration:")
taskHistoryRetentionLimit := int64(0) taskHistoryRetentionLimit := int64(0)

View File

@ -3701,7 +3701,7 @@ _docker_swarm_init() {
COMPREPLY=( $( compgen -W "active drain pause" -- "$cur" ) ) COMPREPLY=( $( compgen -W "active drain pause" -- "$cur" ) )
return return
;; ;;
--cert-expiry|--default-addr-pool|--default-addr-pool-mask-length|--dispatcher-heartbeat|--external-ca|--max-snapshots|--snapshot-interval|--task-history-limit ) --cert-expiry|--data-path-port|--default-addr-pool|--default-addr-pool-mask-length|--dispatcher-heartbeat|--external-ca|--max-snapshots|--snapshot-interval|--task-history-limit )
return return
;; ;;
--data-path-addr) --data-path-addr)
@ -3721,7 +3721,7 @@ _docker_swarm_init() {
case "$cur" in case "$cur" in
-*) -*)
COMPREPLY=( $( compgen -W "--advertise-addr --autolock --availability --cert-expiry --data-path-addr --default-addr-pool --default-addr-pool-mask-length --dispatcher-heartbeat --external-ca --force-new-cluster --help --listen-addr --max-snapshots --snapshot-interval --task-history-limit" -- "$cur" ) ) COMPREPLY=( $( compgen -W "--advertise-addr --autolock --availability --cert-expiry --data-path-addr --data-path-port --default-addr-pool --default-addr-pool-mask-length --dispatcher-heartbeat --external-ca --force-new-cluster --help --listen-addr --max-snapshots --snapshot-interval --task-history-limit " -- "$cur" ) )
;; ;;
esac esac
} }

View File

@ -2285,6 +2285,7 @@ __docker_swarm_subcommand() {
$opts_help \ $opts_help \
"($help)--advertise-addr=[Advertised address]:ip\:port: " \ "($help)--advertise-addr=[Advertised address]:ip\:port: " \
"($help)--data-path-addr=[Data path IP or interface]:ip " \ "($help)--data-path-addr=[Data path IP or interface]:ip " \
"($help)--data-path-port=[Data Path Port]:port " \
"($help)--default-addr-pool=[Default address pool]" \ "($help)--default-addr-pool=[Default address pool]" \
"($help)--default-addr-pool-mask-length=[Default address pool subnet mask length]" \ "($help)--default-addr-pool-mask-length=[Default address pool subnet mask length]" \
"($help)--autolock[Enable manager autolocking]" \ "($help)--autolock[Enable manager autolocking]" \

View File

@ -26,6 +26,7 @@ Options:
--availability string Availability of the node ("active"|"pause"|"drain") (default "active") --availability string Availability of the node ("active"|"pause"|"drain") (default "active")
--cert-expiry duration Validity period for node certificates (ns|us|ms|s|m|h) (default 2160h0m0s) --cert-expiry duration Validity period for node certificates (ns|us|ms|s|m|h) (default 2160h0m0s)
--data-path-addr string Address or interface to use for data path traffic (format: <ip|interface>) --data-path-addr string Address or interface to use for data path traffic (format: <ip|interface>)
--data-path-port uint32 Port number to use for data path traffic (1024 - 49151). If no value is set or is set to 0, the default port (4789) is used.
--default-addr-pool IPnet List of default address pool (format: <cidr>) --default-addr-pool IPnet List of default address pool (format: <cidr>)
--default-addr-pool-mask-length Subnet mask length for default address pool (default 24) --default-addr-pool-mask-length Subnet mask length for default address pool (default 24)
--dispatcher-heartbeat duration Dispatcher heartbeat period (ns|us|ms|s|m|h) (default 5s) --dispatcher-heartbeat duration Dispatcher heartbeat period (ns|us|ms|s|m|h) (default 5s)
@ -130,6 +131,32 @@ management traffic of the cluster.
If unspecified, Docker will use the same IP address or interface that is used for the If unspecified, Docker will use the same IP address or interface that is used for the
advertise address. advertise address.
### `--data-path-port`
This flag allows you to configure the UDP port number to use for data path
traffic. The provided port number must be within the 1024 - 49151 range. If
this flag is not set or is set to 0, the default port number 4789 is used.
The data path port can only be configured when initializing the swarm, and
applies to all nodes that join the swarm.
The following example initializes a new Swarm, and configures the data path
port to UDP port 7777;
```bash
docker swarm init --data-path-port=7777
```
After the swarm is initialized, use the `docker info` command to verify that
the port is configured:
```bash
docker info
...
ClusterID: 9vs5ygs0gguyyec4iqf2314c0
Managers: 1
Nodes: 1
Data Path Port: 7777
...
```
### `--default-addr-pool` ### `--default-addr-pool`
This flag specifies default subnet pools for global scope networks. This flag specifies default subnet pools for global scope networks.
Format example is `--default-addr-pool 30.30.0.0/16 --default-addr-pool 40.40.0.0/16` Format example is `--default-addr-pool 30.30.0.0/16 --default-addr-pool 40.40.0.0/16`

View File

@ -12,7 +12,7 @@ github.com/cpuguy83/go-md2man v1.0.8
github.com/davecgh/go-spew 346938d642f2ec3594ed81d874461961cd0faa76 # v1.1.0 github.com/davecgh/go-spew 346938d642f2ec3594ed81d874461961cd0faa76 # v1.1.0
github.com/dgrijalva/jwt-go a2c85815a77d0f951e33ba4db5ae93629a1530af github.com/dgrijalva/jwt-go a2c85815a77d0f951e33ba4db5ae93629a1530af
github.com/docker/distribution 83389a148052d74ac602f5f1d62f86ff2f3c4aa5 github.com/docker/distribution 83389a148052d74ac602f5f1d62f86ff2f3c4aa5
github.com/docker/docker bd224b5fe564f343e22fa76ae8569ec949f35802 github.com/docker/docker 0b7cb16dde4a20d024c7be59801d63bcfd18611b
github.com/docker/docker-credential-helpers 5241b46610f2491efdf9d1c85f1ddf5b02f6d962 github.com/docker/docker-credential-helpers 5241b46610f2491efdf9d1c85f1ddf5b02f6d962
# the docker/go package contains a customized version of canonical/json # the docker/go package contains a customized version of canonical/json
# and is used by Notary. The package is periodically rebased on current Go versions. # and is used by Notary. The package is periodically rebased on current Go versions.
@ -23,7 +23,7 @@ github.com/docker/go-metrics d466d4f6fd960e01820085bd7e1a24426ee7ef18
github.com/docker/go-units 47565b4f722fb6ceae66b95f853feed578a4a51c # v0.3.3 github.com/docker/go-units 47565b4f722fb6ceae66b95f853feed578a4a51c # v0.3.3
github.com/docker/libtrust 9cbd2a1374f46905c68a4eb3694a130610adc62a github.com/docker/libtrust 9cbd2a1374f46905c68a4eb3694a130610adc62a
github.com/docker/licensing f2eae57157a06681b024f1690923d03e414179a0 github.com/docker/licensing f2eae57157a06681b024f1690923d03e414179a0
github.com/docker/swarmkit 9f271c2963d18a7c60d2c4001fb418ca4037df19 github.com/docker/swarmkit 8af8c420f491f006ab1730e08d446a795b1667d7
github.com/flynn-archive/go-shlex 3f9db97f856818214da2e1057f8ad84803971cff github.com/flynn-archive/go-shlex 3f9db97f856818214da2e1057f8ad84803971cff
github.com/ghodss/yaml 0ca9ea5df5451ffdf184b4428c902747c2c11cd7 # v1.0.0 github.com/ghodss/yaml 0ca9ea5df5451ffdf184b4428c902747c2c11cd7 # v1.0.0
github.com/gogo/googleapis 08a7655d27152912db7aaf4f983275eaf8d128ef github.com/gogo/googleapis 08a7655d27152912db7aaf4f983275eaf8d128ef

View File

@ -14,6 +14,7 @@ type ClusterInfo struct {
RootRotationInProgress bool RootRotationInProgress bool
DefaultAddrPool []string DefaultAddrPool []string
SubnetSize uint32 SubnetSize uint32
DataPathPort uint32
} }
// Swarm represents a swarm. // Swarm represents a swarm.
@ -153,6 +154,7 @@ type InitRequest struct {
ListenAddr string ListenAddr string
AdvertiseAddr string AdvertiseAddr string
DataPathAddr string DataPathAddr string
DataPathPort uint32
ForceNewCluster bool ForceNewCluster bool
Spec Spec Spec Spec
AutoLockManagers bool AutoLockManagers bool

View File

@ -14,7 +14,7 @@ github.com/sirupsen/logrus v1.0.6
github.com/tchap/go-patricia v2.2.6 github.com/tchap/go-patricia v2.2.6
github.com/vdemeester/shakers 24d7f1d6a71aa5d9cbe7390e4afb66b7eef9e1b3 github.com/vdemeester/shakers 24d7f1d6a71aa5d9cbe7390e4afb66b7eef9e1b3
golang.org/x/net a680a1efc54dd51c040b3b5ce4939ea3cf2ea0d1 golang.org/x/net a680a1efc54dd51c040b3b5ce4939ea3cf2ea0d1
golang.org/x/sys ac767d655b305d4e9612f5f6e33120b9176c4ad4 golang.org/x/sys 90868a75fefd03942536221d7c0e2f84ec62a668
github.com/docker/go-units 47565b4f722fb6ceae66b95f853feed578a4a51c # v0.3.3 github.com/docker/go-units 47565b4f722fb6ceae66b95f853feed578a4a51c # v0.3.3
github.com/docker/go-connections 7395e3f8aa162843a74ed6d48e79627d9792ac55 # v0.4.0 github.com/docker/go-connections 7395e3f8aa162843a74ed6d48e79627d9792ac55 # v0.4.0
golang.org/x/text f21a4dfb5e38f5895301dc265a8def02365cc3d0 # v0.3.0 golang.org/x/text f21a4dfb5e38f5895301dc265a8def02365cc3d0 # v0.3.0
@ -26,8 +26,8 @@ github.com/imdario/mergo v0.3.6
golang.org/x/sync 1d60e4601c6fd243af51cc01ddf169918a5407ca golang.org/x/sync 1d60e4601c6fd243af51cc01ddf169918a5407ca
# buildkit # buildkit
github.com/moby/buildkit c7bb575343df0cbfeab8b5b28149630b8153fcc6 github.com/moby/buildkit 8cf9bec86a7f11fe6591804aee152c8e8a7a8a0d # v0.3.3
github.com/tonistiigi/fsutil f567071bed2416e4d87d260d3162722651182317 github.com/tonistiigi/fsutil 2862f6bc5ac9b97124e552a5c108230b38a1b0ca
github.com/grpc-ecosystem/grpc-opentracing 8e809c8a86450a29b90dcc9efbf062d0fe6d9746 github.com/grpc-ecosystem/grpc-opentracing 8e809c8a86450a29b90dcc9efbf062d0fe6d9746
github.com/opentracing/opentracing-go 1361b9cd60be79c4c3a7fa9841b3c132e40066a7 github.com/opentracing/opentracing-go 1361b9cd60be79c4c3a7fa9841b3c132e40066a7
github.com/google/shlex 6f45313302b9c56850fc17f99e40caebce98c716 github.com/google/shlex 6f45313302b9c56850fc17f99e40caebce98c716
@ -37,7 +37,7 @@ github.com/mitchellh/hashstructure 2bca23e0e452137f789efbc8610126fd8b94f73b
#get libnetwork packages #get libnetwork packages
# When updating, also update LIBNETWORK_COMMIT in hack/dockerfile/install/proxy.installer accordingly # When updating, also update LIBNETWORK_COMMIT in hack/dockerfile/install/proxy.installer accordingly
github.com/docker/libnetwork 49627167f0585504fd78ed8827529aec57a9618d github.com/docker/libnetwork 1f28166bb386cf9223d2d00a28382b0e474be314
github.com/docker/go-events 9461782956ad83b30282bf90e31fa6a70c255ba9 github.com/docker/go-events 9461782956ad83b30282bf90e31fa6a70c255ba9
github.com/armon/go-radix e39d623f12e8e41c7b5529e9a9dd67a1e2261f80 github.com/armon/go-radix e39d623f12e8e41c7b5529e9a9dd67a1e2261f80
github.com/armon/go-metrics eb0af217e5e9747e41dd5303755356b62d28e3ec github.com/armon/go-metrics eb0af217e5e9747e41dd5303755356b62d28e3ec
@ -51,8 +51,8 @@ github.com/docker/libkv 458977154600b9f23984d9f4b82e79570b5ae12b
github.com/vishvananda/netns 604eaf189ee867d8c147fafc28def2394e878d25 github.com/vishvananda/netns 604eaf189ee867d8c147fafc28def2394e878d25
github.com/vishvananda/netlink b2de5d10e38ecce8607e6b438b6d174f389a004e github.com/vishvananda/netlink b2de5d10e38ecce8607e6b438b6d174f389a004e
# When updating, consider updating TOMLV_COMMIT in hack/dockerfile/install/tomlv accordingly # When updating, consider updating TOMLV_COMMIT in hack/dockerfile/install/tomlv.installer accordingly
github.com/BurntSushi/toml a368813c5e648fee92e5f6c30e3944ff9d5e8895 github.com/BurntSushi/toml 3012a1dbe2e4bd1391d42b32f0577cb7bbc7f005 # v0.3.1
github.com/samuel/go-zookeeper d0e0d8e11f318e000a8cc434616d69e329edc374 github.com/samuel/go-zookeeper d0e0d8e11f318e000a8cc434616d69e329edc374
github.com/deckarep/golang-set ef32fa3046d9f249d399f98ebaf9be944430fd1d github.com/deckarep/golang-set ef32fa3046d9f249d399f98ebaf9be944430fd1d
github.com/coreos/etcd v3.3.9 github.com/coreos/etcd v3.3.9
@ -74,8 +74,12 @@ github.com/pborman/uuid v1.0
google.golang.org/grpc v1.12.0 google.golang.org/grpc v1.12.0
# This does not need to match RUNC_COMMIT as it is used for helper packages but should be newer or equal # The version of runc should match the version that is used by the containerd
github.com/opencontainers/runc 58592df56734acf62e574865fe40b9e53e967910 # version that is used. If you need to update runc, open a pull request in
# the containerd project first, and update both after that is merged.
# This commit does not need to match RUNC_COMMIT as it is used for helper
# packages but should be newer or equal.
github.com/opencontainers/runc 10d38b660a77168360df3522881e2dc2be5056bd
github.com/opencontainers/runtime-spec 5684b8af48c1ac3b1451fa499724e30e3c20a294 # v1.0.1-49-g5684b8a github.com/opencontainers/runtime-spec 5684b8af48c1ac3b1451fa499724e30e3c20a294 # v1.0.1-49-g5684b8a
github.com/opencontainers/image-spec v1.0.1 github.com/opencontainers/image-spec v1.0.1
github.com/seccomp/libseccomp-golang 32f571b70023028bd57d9288c20efbcb237f3ce0 github.com/seccomp/libseccomp-golang 32f571b70023028bd57d9288c20efbcb237f3ce0
@ -114,7 +118,7 @@ github.com/googleapis/gax-go v2.0.0
google.golang.org/genproto 694d95ba50e67b2e363f3483057db5d4910c18f9 google.golang.org/genproto 694d95ba50e67b2e363f3483057db5d4910c18f9
# containerd # containerd
github.com/containerd/containerd c4446665cb9c30056f4998ed953e6d4ff22c7c39 # v1.2.0 github.com/containerd/containerd de1f167ab96338a9f5c2b17347abf84bdf1dd411 # v1.2.1-rc.0
github.com/containerd/fifo 3d5202aec260678c48179c56f40e6f38a095738c github.com/containerd/fifo 3d5202aec260678c48179c56f40e6f38a095738c
github.com/containerd/continuity bd77b46c8352f74eb12c85bdc01f4b90f69d66b4 github.com/containerd/continuity bd77b46c8352f74eb12c85bdc01f4b90f69d66b4
github.com/containerd/cgroups 5e610833b72089b37d0e615de9a92dfc043757c2 github.com/containerd/cgroups 5e610833b72089b37d0e615de9a92dfc043757c2
@ -126,7 +130,7 @@ github.com/containerd/ttrpc 2a805f71863501300ae1976d29f0454ae003e85a
github.com/gogo/googleapis 08a7655d27152912db7aaf4f983275eaf8d128ef github.com/gogo/googleapis 08a7655d27152912db7aaf4f983275eaf8d128ef
# cluster # cluster
github.com/docker/swarmkit a84c01f49091167dd086c26b45dc18b38d52e4d9 github.com/docker/swarmkit 8af8c420f491f006ab1730e08d446a795b1667d7
github.com/gogo/protobuf v1.0.0 github.com/gogo/protobuf v1.0.0
github.com/cloudflare/cfssl 1.3.2 github.com/cloudflare/cfssl 1.3.2
github.com/fernet/fernet-go 1b2437bc582b3cfbb341ee5a29f8ef5b42912ff2 github.com/fernet/fernet-go 1b2437bc582b3cfbb341ee5a29f8ef5b42912ff2

View File

@ -2,6 +2,7 @@ package genericresource
import ( import (
"fmt" "fmt"
"github.com/docker/swarmkit/api" "github.com/docker/swarmkit/api"
) )

View File

@ -2,6 +2,7 @@ package genericresource
import ( import (
"fmt" "fmt"
"github.com/docker/swarmkit/api" "github.com/docker/swarmkit/api"
) )

View File

@ -75,6 +75,9 @@ type Node struct {
// endpoint on the node to be used for load balancing. Each overlay // endpoint on the node to be used for load balancing. Each overlay
// network, including ingress network, will have an NetworkAttachment. // network, including ingress network, will have an NetworkAttachment.
Attachments []*NetworkAttachment `protobuf:"bytes,10,rep,name=attachments" json:"attachments,omitempty"` Attachments []*NetworkAttachment `protobuf:"bytes,10,rep,name=attachments" json:"attachments,omitempty"`
// VXLANUDPPort specifies the UDP port for VXLAN traffic.
// This information is passed from cluster object to individual nodes.
VXLANUDPPort uint32 `protobuf:"varint,11,opt,name=VXLANUDPPort,proto3" json:"VXLANUDPPort,omitempty"`
} }
func (m *Node) Reset() { *m = Node{} } func (m *Node) Reset() { *m = Node{} }
@ -102,6 +105,15 @@ type Service struct {
// UpdateStatus contains the status of an update, if one is in // UpdateStatus contains the status of an update, if one is in
// progress. // progress.
UpdateStatus *UpdateStatus `protobuf:"bytes,5,opt,name=update_status,json=updateStatus" json:"update_status,omitempty"` UpdateStatus *UpdateStatus `protobuf:"bytes,5,opt,name=update_status,json=updateStatus" json:"update_status,omitempty"`
// PendingDelete indicates that this service's deletion has been requested.
// Services, as well as all service-level resources, can only be deleted
// after all of the service's containers have properly shut down.
// When a user requests a deletion, we just flip this flag
// the deallocator will take it from there - it will start monitoring
// this service's tasks, and proceed to delete the service itself (and
// potentially its associated resources also marked for deletion) when
// all of its tasks are gone
PendingDelete bool `protobuf:"varint,7,opt,name=pending_delete,json=pendingDelete,proto3" json:"pending_delete,omitempty"`
} }
func (m *Service) Reset() { *m = Service{} } func (m *Service) Reset() { *m = Service{} }
@ -239,6 +251,19 @@ type Network struct {
// Runtime state of IPAM options. This may not reflect the // Runtime state of IPAM options. This may not reflect the
// ipam options from NetworkSpec. // ipam options from NetworkSpec.
IPAM *IPAMOptions `protobuf:"bytes,5,opt,name=ipam" json:"ipam,omitempty"` IPAM *IPAMOptions `protobuf:"bytes,5,opt,name=ipam" json:"ipam,omitempty"`
// PendingDelete indicates that this network's deletion has been requested.
// Services, as well as all service-level resources, can only be deleted
// after all the service's containers have properly shut down
// when a user requests a deletion, we just flip this flag
// the deallocator will take it from there
// PendingDelete indicates that this network's deletion has been requested.
// Services, as well as all service-level resources, can only be deleted
// after all of the service's containers have properly shut down.
// When a user requests a deletion of this network, we just flip this flag
// the deallocator will take it from there - it will start monitoring
// the services that still use this service, and proceed to delete
// this network when all of these services are gone
PendingDelete bool `protobuf:"varint,6,opt,name=pending_delete,json=pendingDelete,proto3" json:"pending_delete,omitempty"`
} }
func (m *Network) Reset() { *m = Network{} } func (m *Network) Reset() { *m = Network{} }
@ -281,6 +306,8 @@ type Cluster struct {
// This flag specifies the default subnet size of global scope networks by giving // This flag specifies the default subnet size of global scope networks by giving
// the length of the subnet masks for every such network // the length of the subnet masks for every such network
SubnetSize uint32 `protobuf:"varint,12,opt,name=subnetSize,proto3" json:"subnetSize,omitempty"` SubnetSize uint32 `protobuf:"varint,12,opt,name=subnetSize,proto3" json:"subnetSize,omitempty"`
// VXLANUDPPort specifies the UDP port for VXLAN traffic.
VXLANUDPPort uint32 `protobuf:"varint,13,opt,name=VXLANUDPPort,proto3" json:"VXLANUDPPort,omitempty"`
} }
func (m *Cluster) Reset() { *m = Cluster{} } func (m *Cluster) Reset() { *m = Cluster{} }
@ -890,6 +917,11 @@ func (m *Node) MarshalTo(dAtA []byte) (int, error) {
i += n i += n
} }
} }
if m.VXLANUDPPort != 0 {
dAtA[i] = 0x58
i++
i = encodeVarintObjects(dAtA, i, uint64(m.VXLANUDPPort))
}
return i, nil return i, nil
} }
@ -960,6 +992,16 @@ func (m *Service) MarshalTo(dAtA []byte) (int, error) {
} }
i += n15 i += n15
} }
if m.PendingDelete {
dAtA[i] = 0x38
i++
if m.PendingDelete {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i++
}
if m.SpecVersion != nil { if m.SpecVersion != nil {
dAtA[i] = 0x52 dAtA[i] = 0x52
i++ i++
@ -1337,6 +1379,16 @@ func (m *Network) MarshalTo(dAtA []byte) (int, error) {
} }
i += n31 i += n31
} }
if m.PendingDelete {
dAtA[i] = 0x30
i++
if m.PendingDelete {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i++
}
return i, nil return i, nil
} }
@ -1472,6 +1524,11 @@ func (m *Cluster) MarshalTo(dAtA []byte) (int, error) {
i++ i++
i = encodeVarintObjects(dAtA, i, uint64(m.SubnetSize)) i = encodeVarintObjects(dAtA, i, uint64(m.SubnetSize))
} }
if m.VXLANUDPPort != 0 {
dAtA[i] = 0x68
i++
i = encodeVarintObjects(dAtA, i, uint64(m.VXLANUDPPort))
}
return i, nil return i, nil
} }
@ -1729,6 +1786,9 @@ func (m *Node) Size() (n int) {
n += 1 + l + sovObjects(uint64(l)) n += 1 + l + sovObjects(uint64(l))
} }
} }
if m.VXLANUDPPort != 0 {
n += 1 + sovObjects(uint64(m.VXLANUDPPort))
}
return n return n
} }
@ -1755,6 +1815,9 @@ func (m *Service) Size() (n int) {
l = m.PreviousSpec.Size() l = m.PreviousSpec.Size()
n += 1 + l + sovObjects(uint64(l)) n += 1 + l + sovObjects(uint64(l))
} }
if m.PendingDelete {
n += 2
}
if m.SpecVersion != nil { if m.SpecVersion != nil {
l = m.SpecVersion.Size() l = m.SpecVersion.Size()
n += 1 + l + sovObjects(uint64(l)) n += 1 + l + sovObjects(uint64(l))
@ -1909,6 +1972,9 @@ func (m *Network) Size() (n int) {
l = m.IPAM.Size() l = m.IPAM.Size()
n += 1 + l + sovObjects(uint64(l)) n += 1 + l + sovObjects(uint64(l))
} }
if m.PendingDelete {
n += 2
}
return n return n
} }
@ -1965,6 +2031,9 @@ func (m *Cluster) Size() (n int) {
if m.SubnetSize != 0 { if m.SubnetSize != 0 {
n += 1 + sovObjects(uint64(m.SubnetSize)) n += 1 + sovObjects(uint64(m.SubnetSize))
} }
if m.VXLANUDPPort != 0 {
n += 1 + sovObjects(uint64(m.VXLANUDPPort))
}
return n return n
} }
@ -4716,6 +4785,7 @@ func (this *Node) String() string {
`Certificate:` + strings.Replace(strings.Replace(this.Certificate.String(), "Certificate", "Certificate", 1), `&`, ``, 1) + `,`, `Certificate:` + strings.Replace(strings.Replace(this.Certificate.String(), "Certificate", "Certificate", 1), `&`, ``, 1) + `,`,
`Role:` + fmt.Sprintf("%v", this.Role) + `,`, `Role:` + fmt.Sprintf("%v", this.Role) + `,`,
`Attachments:` + strings.Replace(fmt.Sprintf("%v", this.Attachments), "NetworkAttachment", "NetworkAttachment", 1) + `,`, `Attachments:` + strings.Replace(fmt.Sprintf("%v", this.Attachments), "NetworkAttachment", "NetworkAttachment", 1) + `,`,
`VXLANUDPPort:` + fmt.Sprintf("%v", this.VXLANUDPPort) + `,`,
`}`, `}`,
}, "") }, "")
return s return s
@ -4731,6 +4801,7 @@ func (this *Service) String() string {
`Endpoint:` + strings.Replace(fmt.Sprintf("%v", this.Endpoint), "Endpoint", "Endpoint", 1) + `,`, `Endpoint:` + strings.Replace(fmt.Sprintf("%v", this.Endpoint), "Endpoint", "Endpoint", 1) + `,`,
`UpdateStatus:` + strings.Replace(fmt.Sprintf("%v", this.UpdateStatus), "UpdateStatus", "UpdateStatus", 1) + `,`, `UpdateStatus:` + strings.Replace(fmt.Sprintf("%v", this.UpdateStatus), "UpdateStatus", "UpdateStatus", 1) + `,`,
`PreviousSpec:` + strings.Replace(fmt.Sprintf("%v", this.PreviousSpec), "ServiceSpec", "ServiceSpec", 1) + `,`, `PreviousSpec:` + strings.Replace(fmt.Sprintf("%v", this.PreviousSpec), "ServiceSpec", "ServiceSpec", 1) + `,`,
`PendingDelete:` + fmt.Sprintf("%v", this.PendingDelete) + `,`,
`SpecVersion:` + strings.Replace(fmt.Sprintf("%v", this.SpecVersion), "Version", "Version", 1) + `,`, `SpecVersion:` + strings.Replace(fmt.Sprintf("%v", this.SpecVersion), "Version", "Version", 1) + `,`,
`PreviousSpecVersion:` + strings.Replace(fmt.Sprintf("%v", this.PreviousSpecVersion), "Version", "Version", 1) + `,`, `PreviousSpecVersion:` + strings.Replace(fmt.Sprintf("%v", this.PreviousSpecVersion), "Version", "Version", 1) + `,`,
`}`, `}`,
@ -4817,6 +4888,7 @@ func (this *Network) String() string {
`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "NetworkSpec", "NetworkSpec", 1), `&`, ``, 1) + `,`, `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "NetworkSpec", "NetworkSpec", 1), `&`, ``, 1) + `,`,
`DriverState:` + strings.Replace(fmt.Sprintf("%v", this.DriverState), "Driver", "Driver", 1) + `,`, `DriverState:` + strings.Replace(fmt.Sprintf("%v", this.DriverState), "Driver", "Driver", 1) + `,`,
`IPAM:` + strings.Replace(fmt.Sprintf("%v", this.IPAM), "IPAMOptions", "IPAMOptions", 1) + `,`, `IPAM:` + strings.Replace(fmt.Sprintf("%v", this.IPAM), "IPAMOptions", "IPAMOptions", 1) + `,`,
`PendingDelete:` + fmt.Sprintf("%v", this.PendingDelete) + `,`,
`}`, `}`,
}, "") }, "")
return s return s
@ -4847,6 +4919,7 @@ func (this *Cluster) String() string {
`FIPS:` + fmt.Sprintf("%v", this.FIPS) + `,`, `FIPS:` + fmt.Sprintf("%v", this.FIPS) + `,`,
`DefaultAddressPool:` + fmt.Sprintf("%v", this.DefaultAddressPool) + `,`, `DefaultAddressPool:` + fmt.Sprintf("%v", this.DefaultAddressPool) + `,`,
`SubnetSize:` + fmt.Sprintf("%v", this.SubnetSize) + `,`, `SubnetSize:` + fmt.Sprintf("%v", this.SubnetSize) + `,`,
`VXLANUDPPort:` + fmt.Sprintf("%v", this.VXLANUDPPort) + `,`,
`}`, `}`,
}, "") }, "")
return s return s
@ -5384,6 +5457,25 @@ func (m *Node) Unmarshal(dAtA []byte) error {
return err return err
} }
iNdEx = postIndex iNdEx = postIndex
case 11:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field VXLANUDPPort", wireType)
}
m.VXLANUDPPort = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowObjects
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.VXLANUDPPort |= (uint32(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
default: default:
iNdEx = preIndex iNdEx = preIndex
skippy, err := skipObjects(dAtA[iNdEx:]) skippy, err := skipObjects(dAtA[iNdEx:])
@ -5622,6 +5714,26 @@ func (m *Service) Unmarshal(dAtA []byte) error {
return err return err
} }
iNdEx = postIndex iNdEx = postIndex
case 7:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field PendingDelete", wireType)
}
var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowObjects
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= (int(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
m.PendingDelete = bool(v != 0)
case 10: case 10:
if wireType != 2 { if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field SpecVersion", wireType) return fmt.Errorf("proto: wrong wireType = %d for field SpecVersion", wireType)
@ -6891,6 +7003,26 @@ func (m *Network) Unmarshal(dAtA []byte) error {
return err return err
} }
iNdEx = postIndex iNdEx = postIndex
case 6:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field PendingDelete", wireType)
}
var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowObjects
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= (int(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
m.PendingDelete = bool(v != 0)
default: default:
iNdEx = preIndex iNdEx = preIndex
skippy, err := skipObjects(dAtA[iNdEx:]) skippy, err := skipObjects(dAtA[iNdEx:])
@ -7332,6 +7464,25 @@ func (m *Cluster) Unmarshal(dAtA []byte) error {
break break
} }
} }
case 13:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field VXLANUDPPort", wireType)
}
m.VXLANUDPPort = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowObjects
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.VXLANUDPPort |= (uint32(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
default: default:
iNdEx = preIndex iNdEx = preIndex
skippy, err := skipObjects(dAtA[iNdEx:]) skippy, err := skipObjects(dAtA[iNdEx:])
@ -8128,104 +8279,108 @@ var (
func init() { proto.RegisterFile("github.com/docker/swarmkit/api/objects.proto", fileDescriptorObjects) } func init() { proto.RegisterFile("github.com/docker/swarmkit/api/objects.proto", fileDescriptorObjects) }
var fileDescriptorObjects = []byte{ var fileDescriptorObjects = []byte{
// 1581 bytes of a gzipped FileDescriptorProto // 1643 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0x4b, 0x73, 0x1b, 0x4b, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xcd, 0x73, 0x23, 0x47,
0x15, 0xce, 0x48, 0x63, 0x3d, 0x8e, 0x6c, 0x61, 0xfa, 0x1a, 0x33, 0x11, 0x46, 0x32, 0xba, 0x05, 0x15, 0xdf, 0x91, 0x67, 0xf5, 0xf1, 0xf4, 0xc1, 0xd2, 0x31, 0x66, 0x56, 0x18, 0xc9, 0x28, 0x15,
0x75, 0xeb, 0x56, 0x4a, 0xbe, 0x98, 0x0b, 0x38, 0x86, 0xcb, 0x8d, 0x64, 0x9b, 0x44, 0x15, 0x42, 0x6a, 0x2b, 0xb5, 0x25, 0x87, 0x25, 0x80, 0xd7, 0x10, 0x12, 0xc9, 0x32, 0x1b, 0x55, 0xb2, 0x59,
0x5c, 0xed, 0x90, 0xb0, 0x1b, 0x5a, 0x33, 0x6d, 0x65, 0xd0, 0x68, 0x7a, 0x6a, 0xba, 0xa5, 0x20, 0x57, 0x3b, 0x71, 0x72, 0x1b, 0x5a, 0x33, 0x6d, 0xed, 0xa0, 0xd1, 0xf4, 0xd4, 0x74, 0x4b, 0x41,
0x56, 0x59, 0x9b, 0x1f, 0xe0, 0x1d, 0x8b, 0xfc, 0x0b, 0x36, 0x2c, 0x58, 0x65, 0xc9, 0x8a, 0x62, 0x9c, 0x38, 0x9b, 0x3f, 0xc0, 0x37, 0x0e, 0xc0, 0x3f, 0xc1, 0x85, 0x03, 0x07, 0x6a, 0xb9, 0x71,
0xe5, 0x22, 0xfa, 0x17, 0x54, 0xb1, 0xa0, 0xba, 0xa7, 0x47, 0x1a, 0x5b, 0xe3, 0x17, 0x95, 0x72, 0xa2, 0x38, 0xb9, 0x58, 0xfd, 0x17, 0xdc, 0xa8, 0xee, 0xe9, 0x91, 0xc6, 0xd6, 0xf8, 0x8b, 0xda,
0xb1, 0x72, 0x3f, 0xbe, 0xef, 0xf4, 0x39, 0x67, 0xce, 0xcb, 0x82, 0x07, 0x7d, 0x4f, 0xbc, 0x1e, 0x72, 0x71, 0x72, 0x7f, 0xfc, 0x7e, 0xaf, 0xdf, 0x7b, 0xf3, 0xbe, 0x2c, 0x78, 0x3c, 0xf4, 0xc4,
0xf5, 0x5a, 0x0e, 0x1b, 0x6e, 0xb9, 0xcc, 0x19, 0xd0, 0x68, 0x8b, 0xbf, 0x21, 0xd1, 0x70, 0xe0, 0xcb, 0xc9, 0xa0, 0xed, 0xb0, 0xf1, 0xb6, 0xcb, 0x9c, 0x11, 0x8d, 0xb6, 0xf9, 0xd7, 0x24, 0x1a,
0x89, 0x2d, 0x12, 0x7a, 0x5b, 0xac, 0xf7, 0x7b, 0xea, 0x08, 0xde, 0x0a, 0x23, 0x26, 0x18, 0x42, 0x8f, 0x3c, 0xb1, 0x4d, 0x42, 0x6f, 0x9b, 0x0d, 0x7e, 0x45, 0x1d, 0xc1, 0xdb, 0x61, 0xc4, 0x04,
0x31, 0xa4, 0x95, 0x40, 0x5a, 0xe3, 0x1f, 0xd6, 0x3e, 0xbf, 0x46, 0x82, 0x98, 0x84, 0x54, 0xf3, 0x43, 0x28, 0x86, 0xb4, 0x13, 0x48, 0x7b, 0xfa, 0x83, 0xfa, 0xbb, 0xd7, 0x48, 0x10, 0xb3, 0x90,
0xaf, 0xc5, 0xf2, 0x90, 0x3a, 0x09, 0xb6, 0xd1, 0x67, 0xac, 0xef, 0xd3, 0x2d, 0xb5, 0xeb, 0x8d, 0x6a, 0xfe, 0xb5, 0x58, 0x1e, 0x52, 0x27, 0xc1, 0x36, 0x87, 0x8c, 0x0d, 0x7d, 0xba, 0xad, 0x76,
0x8e, 0xb7, 0x84, 0x37, 0xa4, 0x5c, 0x90, 0x61, 0xa8, 0x01, 0x6b, 0x7d, 0xd6, 0x67, 0x6a, 0xb9, 0x83, 0xc9, 0xf1, 0xb6, 0xf0, 0xc6, 0x94, 0x0b, 0x32, 0x0e, 0x35, 0x60, 0x7d, 0xc8, 0x86, 0x4c,
0x25, 0x57, 0xfa, 0xf4, 0xfe, 0x45, 0x1a, 0x09, 0x26, 0xfa, 0xea, 0xa7, 0x57, 0xbc, 0x3e, 0x83, 0x2d, 0xb7, 0xe5, 0x4a, 0x9f, 0x3e, 0xbc, 0x48, 0x23, 0xc1, 0x4c, 0x5f, 0xfd, 0xe4, 0x8a, 0xd7,
0x87, 0xfe, 0xa8, 0xef, 0x05, 0xfa, 0x4f, 0x4c, 0x6c, 0xfe, 0xc5, 0x00, 0xf3, 0x19, 0x15, 0x04, 0x17, 0xf0, 0xd0, 0x9f, 0x0c, 0xbd, 0x40, 0xff, 0x89, 0x89, 0xad, 0x3f, 0x1b, 0x60, 0x3e, 0xa7,
0xfd, 0x0c, 0x8a, 0x63, 0x1a, 0x71, 0x8f, 0x05, 0x96, 0xb1, 0x69, 0x7c, 0x56, 0xd9, 0xfe, 0x4e, 0x82, 0xa0, 0x9f, 0x42, 0x61, 0x4a, 0x23, 0xee, 0xb1, 0xc0, 0x32, 0xb6, 0x8c, 0x47, 0xe5, 0x27,
0x6b, 0xd1, 0x23, 0xad, 0x97, 0x31, 0xa4, 0x63, 0xbe, 0x3f, 0x6b, 0xdc, 0xc3, 0x09, 0x03, 0x3d, 0xdf, 0x69, 0xaf, 0x7a, 0xa4, 0x7d, 0x14, 0x43, 0xba, 0xe6, 0xab, 0xb3, 0xe6, 0x3d, 0x9c, 0x30,
0x04, 0x70, 0x22, 0x4a, 0x04, 0x75, 0x6d, 0x22, 0xac, 0x9c, 0xe2, 0xd7, 0x5a, 0xb1, 0xba, 0xad, 0xd0, 0x53, 0x00, 0x27, 0xa2, 0x44, 0x50, 0xd7, 0x26, 0xc2, 0xca, 0x29, 0x7e, 0xbd, 0x1d, 0xab,
0xe4, 0xfd, 0xd6, 0x8b, 0xc4, 0x4a, 0x5c, 0xd6, 0xe8, 0xb6, 0x90, 0xd4, 0x51, 0xe8, 0x26, 0xd4, 0xdb, 0x4e, 0xde, 0x6f, 0x7f, 0x9e, 0x58, 0x89, 0x4b, 0x1a, 0xdd, 0x11, 0x92, 0x3a, 0x09, 0xdd,
0xfc, 0xf5, 0x54, 0x8d, 0x6e, 0x8b, 0xe6, 0xdb, 0x25, 0x30, 0x7f, 0xcd, 0x5c, 0x8a, 0xd6, 0x21, 0x84, 0xba, 0x76, 0x3d, 0x55, 0xa3, 0x3b, 0xa2, 0xf5, 0xa7, 0xfb, 0x60, 0x7e, 0xc6, 0x5c, 0x8a,
0xe7, 0xb9, 0x4a, 0xed, 0x72, 0xa7, 0x30, 0x3d, 0x6b, 0xe4, 0xba, 0xfb, 0x38, 0xe7, 0xb9, 0x68, 0x36, 0x20, 0xe7, 0xb9, 0x4a, 0xed, 0x52, 0x37, 0x3f, 0x3f, 0x6b, 0xe6, 0xfa, 0x3d, 0x9c, 0xf3,
0x1b, 0xcc, 0x21, 0x15, 0x44, 0x2b, 0x64, 0x65, 0x19, 0x24, 0x6d, 0xd7, 0xd6, 0x28, 0x2c, 0xfa, 0x5c, 0xf4, 0x04, 0xcc, 0x31, 0x15, 0x44, 0x2b, 0x64, 0x65, 0x19, 0x24, 0x6d, 0xd7, 0xd6, 0x28,
0x09, 0x98, 0xf2, 0x53, 0x69, 0x4d, 0x36, 0xb2, 0x38, 0xf2, 0xcd, 0xa3, 0x90, 0x3a, 0x09, 0x4f, 0x2c, 0xfa, 0x31, 0x98, 0xf2, 0x53, 0x69, 0x4d, 0x36, 0xb3, 0x38, 0xf2, 0xcd, 0xc3, 0x90, 0x3a,
0xe2, 0xd1, 0x01, 0x54, 0x5c, 0xca, 0x9d, 0xc8, 0x0b, 0x85, 0xf4, 0xa1, 0xa9, 0xe8, 0x9f, 0x5e, 0x09, 0x4f, 0xe2, 0xd1, 0x3e, 0x94, 0x5d, 0xca, 0x9d, 0xc8, 0x0b, 0x85, 0xf4, 0xa1, 0xa9, 0xe8,
0x46, 0xdf, 0x9f, 0x43, 0x71, 0x9a, 0x87, 0x7e, 0x0e, 0x05, 0x2e, 0x88, 0x18, 0x71, 0x6b, 0x49, 0x6f, 0x5f, 0x46, 0xef, 0x2d, 0xa1, 0x38, 0xcd, 0x43, 0x3f, 0x83, 0x3c, 0x17, 0x44, 0x4c, 0xb8,
0x49, 0xa8, 0x5f, 0xaa, 0x80, 0x42, 0x69, 0x15, 0x34, 0x07, 0x3d, 0x81, 0xea, 0x90, 0x04, 0xa4, 0x75, 0x5f, 0x49, 0x68, 0x5c, 0xaa, 0x80, 0x42, 0x69, 0x15, 0x34, 0x07, 0x7d, 0x0c, 0xb5, 0x31,
0x4f, 0x23, 0x5b, 0x4b, 0x29, 0x28, 0x29, 0xdf, 0xcb, 0x34, 0x3d, 0x46, 0xc6, 0x82, 0xf0, 0xca, 0x09, 0xc8, 0x90, 0x46, 0xb6, 0x96, 0x92, 0x57, 0x52, 0xbe, 0x97, 0x69, 0x7a, 0x8c, 0x8c, 0x05,
0x30, 0xbd, 0x45, 0x5d, 0x00, 0x22, 0x04, 0x71, 0x5e, 0x0f, 0x69, 0x20, 0xac, 0xa2, 0x92, 0xf2, 0xe1, 0xea, 0x38, 0xbd, 0x45, 0x7d, 0x00, 0x22, 0x04, 0x71, 0x5e, 0x8e, 0x69, 0x20, 0xac, 0x82,
0xfd, 0x4c, 0x5d, 0xa8, 0x78, 0xc3, 0xa2, 0x41, 0x7b, 0x06, 0xee, 0xe4, 0x2c, 0x03, 0xa7, 0xc8, 0x92, 0xf2, 0x4e, 0xa6, 0x2e, 0x54, 0x7c, 0xcd, 0xa2, 0x51, 0x67, 0x01, 0xee, 0xe6, 0x2c, 0x03,
0xe8, 0x31, 0x54, 0x1c, 0x1a, 0x09, 0xef, 0xd8, 0x73, 0x88, 0xa0, 0x56, 0x49, 0xc9, 0x6a, 0x64, 0xa7, 0xc8, 0xe8, 0x19, 0x94, 0x1d, 0x1a, 0x09, 0xef, 0xd8, 0x73, 0x88, 0xa0, 0x56, 0x51, 0xc9,
0xc9, 0xda, 0x9b, 0xc3, 0xb4, 0x61, 0x69, 0x26, 0xfa, 0x02, 0xcc, 0x88, 0xf9, 0xd4, 0x2a, 0x6f, 0x6a, 0x66, 0xc9, 0xda, 0x5b, 0xc2, 0xb4, 0x61, 0x69, 0x26, 0x7a, 0x0f, 0xcc, 0x88, 0xf9, 0xd4,
0x1a, 0x9f, 0x55, 0x2f, 0xff, 0x34, 0x98, 0xf9, 0x14, 0x2b, 0xa4, 0x7c, 0x7a, 0xae, 0x08, 0xb7, 0x2a, 0x6d, 0x19, 0x8f, 0x6a, 0x97, 0x7f, 0x1a, 0xcc, 0x7c, 0x8a, 0x15, 0x52, 0x3e, 0xbd, 0x54,
0x60, 0x33, 0x7f, 0x63, 0x33, 0x70, 0x9a, 0xb9, 0xbb, 0x7e, 0x72, 0xda, 0x44, 0xb0, 0x5a, 0x32, 0x84, 0x5b, 0xb0, 0xb5, 0x76, 0x63, 0x33, 0x70, 0x9a, 0x89, 0x5a, 0x50, 0x39, 0xfa, 0xea, 0xd3,
0x56, 0x0d, 0x15, 0x67, 0xc6, 0x17, 0xc6, 0x6f, 0x8d, 0xdf, 0x19, 0xcd, 0xff, 0xe4, 0xa1, 0x78, 0xce, 0x67, 0x5f, 0xf4, 0x0e, 0x0e, 0x58, 0x24, 0xac, 0xf2, 0x96, 0xf1, 0xa8, 0x8a, 0xcf, 0x9d,
0x44, 0xa3, 0xb1, 0xe7, 0x7c, 0xdc, 0x28, 0x7c, 0x78, 0x2e, 0x0a, 0x33, 0x9d, 0xa5, 0x9f, 0x5d, 0xed, 0x6e, 0x9c, 0x9c, 0xb6, 0x10, 0x3c, 0x28, 0x1a, 0x0f, 0x0c, 0x15, 0x8b, 0xc6, 0x7b, 0xc6,
0x08, 0xc4, 0x1d, 0x28, 0xd1, 0xc0, 0x0d, 0x99, 0x17, 0x08, 0x1d, 0x85, 0x99, 0x9e, 0x3a, 0xd0, 0x57, 0xc6, 0x2f, 0x8d, 0xd6, 0x1f, 0x4d, 0x28, 0x1c, 0xd2, 0x68, 0xea, 0x39, 0x6f, 0x36, 0x52,
0x18, 0x3c, 0x43, 0xa3, 0x03, 0x58, 0x89, 0x93, 0xcb, 0x3e, 0x17, 0x82, 0x9b, 0x59, 0xf4, 0xdf, 0x9f, 0x9e, 0x8b, 0xd4, 0x4c, 0x87, 0xea, 0x67, 0x57, 0x82, 0x75, 0x07, 0x8a, 0x34, 0x70, 0x43,
0x28, 0xa0, 0x8e, 0x9d, 0xe5, 0x51, 0x6a, 0x87, 0xf6, 0x61, 0x25, 0x8c, 0xe8, 0xd8, 0x63, 0x23, 0xe6, 0x05, 0x42, 0x47, 0x6a, 0xa6, 0x37, 0xf7, 0x35, 0x06, 0x2f, 0xd0, 0x68, 0x1f, 0xaa, 0x71,
0x6e, 0x2b, 0x23, 0x0a, 0x37, 0x32, 0x02, 0x2f, 0x27, 0x2c, 0xb9, 0x43, 0xbf, 0x80, 0x65, 0x49, 0x02, 0xda, 0xe7, 0xc2, 0x74, 0x2b, 0x8b, 0xfe, 0x85, 0x02, 0xea, 0xf8, 0xaa, 0x4c, 0x52, 0x3b,
0xb6, 0x93, 0xa2, 0x04, 0xd7, 0x16, 0x25, 0x5c, 0x91, 0x04, 0xbd, 0x41, 0xcf, 0xe1, 0x5b, 0xe7, 0xd4, 0x83, 0x6a, 0x18, 0xd1, 0xa9, 0xc7, 0x26, 0xdc, 0x56, 0x46, 0xe4, 0x6f, 0x64, 0x04, 0xae,
0xb4, 0x98, 0x09, 0xaa, 0x5c, 0x2f, 0xe8, 0x93, 0xb4, 0x26, 0xfa, 0x70, 0x17, 0x9d, 0x9c, 0x36, 0x24, 0x2c, 0xb9, 0x43, 0xef, 0x40, 0x2d, 0xa4, 0x81, 0xeb, 0x05, 0x43, 0xdb, 0xa5, 0x3e, 0x15,
0xab, 0xb0, 0x9c, 0x0e, 0x81, 0xe6, 0x9f, 0x73, 0x50, 0x4a, 0x1c, 0x89, 0xbe, 0xd4, 0xdf, 0xcc, 0x54, 0x05, 0x6a, 0x11, 0x57, 0xf5, 0x69, 0x4f, 0x1d, 0xa2, 0x9f, 0x43, 0x45, 0xbe, 0x61, 0x27,
0xb8, 0xdc, 0x6b, 0x09, 0x56, 0xd9, 0x1b, 0x7f, 0xae, 0x2f, 0x61, 0x29, 0x64, 0x91, 0xe0, 0x56, 0xf5, 0x0d, 0xae, 0xad, 0x6f, 0xb8, 0x2c, 0x09, 0x7a, 0x83, 0x5e, 0xc0, 0xb7, 0xce, 0x29, 0xbb,
0x4e, 0x05, 0x67, 0x66, 0xbe, 0x1f, 0xb2, 0x48, 0xec, 0xb1, 0xe0, 0xd8, 0xeb, 0xe3, 0x18, 0x8c, 0x10, 0x54, 0xbe, 0x5e, 0xd0, 0x5b, 0x69, 0x85, 0xf5, 0xe1, 0x2e, 0x3a, 0x39, 0x6d, 0xd5, 0xa0,
0x5e, 0x41, 0x65, 0xec, 0x45, 0x62, 0x44, 0x7c, 0xdb, 0x0b, 0xb9, 0x95, 0x57, 0xdc, 0x1f, 0x5c, 0x92, 0x8e, 0x94, 0xd6, 0xef, 0x73, 0x50, 0x4c, 0xfc, 0x8d, 0xde, 0xd7, 0x9f, 0xd6, 0xb8, 0xdc,
0xf5, 0x64, 0xeb, 0x65, 0x8c, 0xef, 0x1e, 0x76, 0xaa, 0xd3, 0xb3, 0x06, 0xcc, 0xb6, 0x1c, 0x83, 0xb9, 0x09, 0x56, 0xb9, 0x25, 0xfe, 0xaa, 0xef, 0xc3, 0xfd, 0x90, 0x45, 0x82, 0x5b, 0x39, 0x15,
0x16, 0xd5, 0x0d, 0x79, 0xed, 0x19, 0x94, 0x67, 0x37, 0xe8, 0x01, 0x40, 0x10, 0xe7, 0x85, 0x3d, 0xe7, 0x99, 0xa5, 0x43, 0x46, 0xea, 0x1e, 0x0b, 0x8e, 0xbd, 0x21, 0x8e, 0xc1, 0xe8, 0x4b, 0x28,
0x8b, 0xec, 0x95, 0xe9, 0x59, 0xa3, 0xac, 0xb3, 0xa5, 0xbb, 0x8f, 0xcb, 0x1a, 0xd0, 0x75, 0x11, 0x4f, 0xbd, 0x48, 0x4c, 0x88, 0x6f, 0x7b, 0x21, 0xb7, 0xd6, 0x14, 0xf7, 0xfb, 0x57, 0x3d, 0xd9,
0x02, 0x93, 0xb8, 0x6e, 0xa4, 0xe2, 0xbc, 0x8c, 0xd5, 0xba, 0xf9, 0xa7, 0x22, 0x98, 0x2f, 0x08, 0x3e, 0x8a, 0xf1, 0xfd, 0x83, 0x6e, 0x6d, 0x7e, 0xd6, 0x84, 0xc5, 0x96, 0x63, 0xd0, 0xa2, 0xfa,
0x1f, 0xdc, 0x75, 0x89, 0x96, 0x6f, 0x2e, 0x64, 0xc6, 0x03, 0x00, 0x1e, 0xc7, 0x9b, 0x34, 0xc7, 0x21, 0xaf, 0x3f, 0x87, 0xd2, 0xe2, 0x06, 0x3d, 0x06, 0x08, 0xe2, 0x14, 0xb3, 0x17, 0x09, 0x50,
0x9c, 0x9b, 0xa3, 0xa3, 0x50, 0x9a, 0xa3, 0x01, 0xb1, 0x39, 0xdc, 0x67, 0x42, 0x25, 0x81, 0x89, 0x9d, 0x9f, 0x35, 0x4b, 0x3a, 0xf1, 0xfa, 0x3d, 0x5c, 0xd2, 0x80, 0xbe, 0x8b, 0x10, 0x98, 0xc4,
0xd5, 0x1a, 0x7d, 0x0a, 0xc5, 0x80, 0xb9, 0x8a, 0x5e, 0x50, 0x74, 0x98, 0x9e, 0x35, 0x0a, 0xb2, 0x75, 0x23, 0x95, 0x0e, 0x25, 0xac, 0xd6, 0xad, 0xdf, 0x15, 0xc0, 0xfc, 0x9c, 0xf0, 0xd1, 0x5d,
0xe8, 0x74, 0xf7, 0x71, 0x41, 0x5e, 0x75, 0x5d, 0x55, 0x74, 0x82, 0x80, 0x09, 0x22, 0x0b, 0x3a, 0x57, 0x7b, 0xf9, 0xe6, 0x4a, 0x02, 0x3d, 0x06, 0xe0, 0x71, 0x58, 0x4a, 0x73, 0xcc, 0xa5, 0x39,
0xd7, 0xb5, 0x33, 0x33, 0xfa, 0xdb, 0x73, 0x58, 0x52, 0xef, 0x52, 0x4c, 0xf4, 0x12, 0x3e, 0x49, 0x3a, 0x58, 0xa5, 0x39, 0x1a, 0x10, 0x9b, 0xc3, 0x7d, 0x26, 0x54, 0xae, 0x98, 0x58, 0xad, 0xd1,
0xf4, 0x4d, 0x0b, 0x2c, 0xdd, 0x46, 0x20, 0xd2, 0x12, 0x52, 0x37, 0xa9, 0x1e, 0x53, 0xbe, 0xbc, 0xdb, 0x50, 0x08, 0x98, 0xab, 0xe8, 0x79, 0x45, 0x87, 0xf9, 0x59, 0x33, 0x2f, 0xeb, 0x57, 0xbf,
0xc7, 0x28, 0x0f, 0x66, 0xf5, 0x98, 0x0e, 0xac, 0xb8, 0x94, 0x7b, 0x11, 0x75, 0x55, 0x99, 0xa0, 0x87, 0xf3, 0xf2, 0xaa, 0xef, 0xaa, 0xfa, 0x15, 0x04, 0x4c, 0x10, 0xd9, 0x1b, 0xb8, 0x2e, 0xc3,
0x2a, 0x33, 0xab, 0xdb, 0xdf, 0xbd, 0x4a, 0x08, 0xc5, 0xcb, 0x9a, 0xa3, 0x76, 0xa8, 0x0d, 0x25, 0x99, 0x49, 0xd2, 0x59, 0xc2, 0x92, 0xd2, 0x99, 0x62, 0xa2, 0x23, 0x78, 0x2b, 0xd1, 0x37, 0x2d,
0x1d, 0x37, 0xdc, 0xaa, 0xdc, 0xa6, 0x28, 0xcf, 0x68, 0xe7, 0xca, 0xdc, 0xf2, 0xad, 0xca, 0xdc, 0xb0, 0x78, 0x1b, 0x81, 0x48, 0x4b, 0x48, 0xdd, 0xa4, 0xda, 0x55, 0xe9, 0xf2, 0x76, 0xa5, 0x3c,
0x43, 0x00, 0x9f, 0xf5, 0x6d, 0x37, 0xf2, 0xc6, 0x34, 0xb2, 0x56, 0xf4, 0xc4, 0x91, 0xc1, 0xdd, 0x98, 0xd5, 0xae, 0xba, 0x50, 0x75, 0x29, 0xf7, 0x22, 0xea, 0xaa, 0x6a, 0x42, 0x55, 0x66, 0xd6,
0x57, 0x08, 0x5c, 0xf6, 0x59, 0x3f, 0x5e, 0x2e, 0x14, 0xa5, 0xea, 0x2d, 0x8b, 0x12, 0x81, 0x1a, 0x9e, 0x7c, 0xf7, 0x2a, 0x21, 0x14, 0x57, 0x34, 0x47, 0xed, 0x50, 0x07, 0x8a, 0x3a, 0x6e, 0xb8,
0xe1, 0xdc, 0xeb, 0x07, 0xd4, 0xb5, 0xfb, 0x34, 0xa0, 0x91, 0xe7, 0xd8, 0x11, 0xe5, 0x6c, 0x14, 0x55, 0xbe, 0x4d, 0x7d, 0x5f, 0xd0, 0xce, 0x55, 0xc3, 0xca, 0xad, 0xaa, 0xe1, 0x53, 0x00, 0x9f,
0x39, 0x94, 0x5b, 0xdf, 0x50, 0x9e, 0xc8, 0x9c, 0x19, 0x1e, 0xc7, 0x60, 0xac, 0xb1, 0xd8, 0x4a, 0x0d, 0x6d, 0x37, 0xf2, 0xa6, 0x34, 0xb2, 0xaa, 0x7a, 0x78, 0xc9, 0xe0, 0xf6, 0x14, 0x02, 0x97,
0xc4, 0x5c, 0xb8, 0xe0, 0xbb, 0xb5, 0x93, 0xd3, 0xe6, 0x3a, 0xac, 0xa5, 0xcb, 0xd4, 0x8e, 0xf1, 0x7c, 0x36, 0x8c, 0x97, 0x2b, 0x45, 0xa9, 0x76, 0xcb, 0xa2, 0x44, 0xa0, 0x4e, 0x38, 0xf7, 0x86,
0xc8, 0x78, 0x62, 0x1c, 0x1a, 0xcd, 0xbf, 0xe5, 0xe0, 0x9b, 0x0b, 0x3e, 0x45, 0x3f, 0x86, 0xa2, 0x01, 0x75, 0xed, 0x21, 0x0d, 0x68, 0xe4, 0x39, 0x76, 0x44, 0x39, 0x9b, 0x44, 0x0e, 0xe5, 0xd6,
0xf6, 0xea, 0x55, 0x93, 0x9f, 0xe6, 0xe1, 0x04, 0x8b, 0x36, 0xa0, 0x2c, 0x53, 0x9c, 0x72, 0x4e, 0x37, 0x94, 0x27, 0x32, 0xc7, 0x8f, 0x67, 0x31, 0x18, 0x6b, 0x2c, 0xb6, 0x12, 0x31, 0x17, 0x2e,
0xe3, 0xe2, 0x55, 0xc6, 0xf3, 0x03, 0x64, 0x41, 0x91, 0xf8, 0x1e, 0x91, 0x77, 0x79, 0x75, 0x97, 0xf8, 0x6e, 0xfd, 0xe4, 0xb4, 0xb5, 0x01, 0xeb, 0xe9, 0x32, 0xb5, 0x63, 0x7c, 0x64, 0x7c, 0x6c,
0x6c, 0xd1, 0x08, 0xd6, 0x63, 0xd7, 0xdb, 0xf3, 0x06, 0x6b, 0xb3, 0x50, 0x70, 0xcb, 0x54, 0xf6, 0x1c, 0x18, 0xad, 0xbf, 0xe6, 0xe0, 0x9b, 0x2b, 0x3e, 0x45, 0x3f, 0x82, 0x82, 0xf6, 0xea, 0x55,
0x7f, 0x7d, 0xa3, 0x48, 0xd0, 0x1f, 0x67, 0x7e, 0xf0, 0x3c, 0x14, 0xfc, 0x20, 0x10, 0xd1, 0x04, 0x43, 0xa4, 0xe6, 0xe1, 0x04, 0x8b, 0x36, 0xa1, 0x24, 0x53, 0x9c, 0x72, 0x4e, 0xe3, 0xe2, 0x55,
0xaf, 0xb9, 0x19, 0x57, 0xb5, 0xc7, 0x70, 0xff, 0x52, 0x0a, 0x5a, 0x85, 0xfc, 0x80, 0x4e, 0xe2, 0xc2, 0xcb, 0x03, 0x64, 0x41, 0x81, 0xf8, 0x1e, 0x91, 0x77, 0x6b, 0xea, 0x2e, 0xd9, 0xa2, 0x09,
0xf2, 0x84, 0xe5, 0x12, 0xad, 0xc1, 0xd2, 0x98, 0xf8, 0x23, 0xaa, 0xab, 0x59, 0xbc, 0xd9, 0xcd, 0x6c, 0xc4, 0xae, 0xb7, 0x97, 0xbd, 0xda, 0x66, 0xa1, 0xe0, 0x96, 0xa9, 0xec, 0xff, 0xf0, 0x46,
0xed, 0x18, 0xcd, 0x77, 0x39, 0x28, 0x6a, 0x75, 0xee, 0xba, 0xe5, 0xeb, 0x67, 0x17, 0x0a, 0xdb, 0x91, 0xa0, 0x3f, 0xce, 0xf2, 0xe0, 0x45, 0x28, 0xf8, 0x7e, 0x20, 0xa2, 0x19, 0x5e, 0x77, 0x33,
0x57, 0xb0, 0xac, 0x5d, 0x1a, 0x67, 0xa4, 0x79, 0x6d, 0x4c, 0x57, 0x62, 0x7c, 0x9c, 0x8d, 0x5f, 0xae, 0xea, 0xcf, 0xe0, 0xe1, 0xa5, 0x14, 0xf4, 0x00, 0xd6, 0x46, 0x74, 0x16, 0x97, 0x27, 0x2c,
0x81, 0xe9, 0x85, 0x64, 0xa8, 0xdb, 0x7d, 0xe6, 0xcb, 0xdd, 0xc3, 0xf6, 0xb3, 0xe7, 0x61, 0x5c, 0x97, 0x68, 0x1d, 0xee, 0x4f, 0x89, 0x3f, 0xa1, 0xba, 0x9a, 0xc5, 0x9b, 0xdd, 0xdc, 0x8e, 0xd1,
0x58, 0x4a, 0xd3, 0xb3, 0x86, 0x29, 0x0f, 0xb0, 0xa2, 0x65, 0x36, 0xc6, 0x77, 0x05, 0x28, 0xee, 0xfa, 0x7b, 0x0e, 0x0a, 0x5a, 0x9d, 0xbb, 0x9e, 0x0c, 0xf4, 0xb3, 0x2b, 0x85, 0xed, 0x03, 0xa8,
0xf9, 0x23, 0x2e, 0x68, 0x74, 0xd7, 0x4e, 0xd2, 0xcf, 0x2e, 0x38, 0x69, 0x0f, 0x8a, 0x11, 0x63, 0x68, 0x97, 0xc6, 0x19, 0x69, 0x5e, 0x1b, 0xd3, 0xe5, 0x18, 0x1f, 0x67, 0xe3, 0x07, 0x60, 0x7a,
0xc2, 0x76, 0xc8, 0x55, 0xfe, 0xc1, 0x8c, 0x89, 0xbd, 0x76, 0xa7, 0x2a, 0x89, 0xb2, 0xb6, 0xc7, 0x21, 0x19, 0xeb, 0xa9, 0x20, 0xf3, 0xe5, 0xfe, 0x41, 0xe7, 0xf9, 0x8b, 0x30, 0x2e, 0x2c, 0xc5,
0x7b, 0x5c, 0x90, 0xd4, 0x3d, 0x82, 0x5e, 0xc1, 0x7a, 0xd2, 0x11, 0x7b, 0x8c, 0x09, 0x2e, 0x22, 0xf9, 0x59, 0xd3, 0x94, 0x07, 0x58, 0xd1, 0x32, 0x1a, 0x7a, 0x3e, 0xa3, 0xa1, 0x67, 0xf6, 0xcf,
0x12, 0xda, 0x03, 0x3a, 0x91, 0xb3, 0x52, 0xfe, 0xb2, 0x41, 0xfb, 0x20, 0x70, 0xa2, 0x89, 0x72, 0xbf, 0xe5, 0xa1, 0xb0, 0xe7, 0x4f, 0xb8, 0xa0, 0xd1, 0x5d, 0xfb, 0x52, 0x3f, 0xbb, 0xe2, 0xcb,
0xde, 0x53, 0x3a, 0xc1, 0x6b, 0x5a, 0x40, 0x27, 0xe1, 0x3f, 0xa5, 0x13, 0x8e, 0xbe, 0x86, 0x0d, 0x3d, 0x28, 0x44, 0x8c, 0x09, 0xdb, 0x21, 0x57, 0xb9, 0x11, 0x33, 0x26, 0xf6, 0x3a, 0xdd, 0x9a,
0x3a, 0x83, 0x49, 0x89, 0xb6, 0x4f, 0x86, 0xb2, 0xd7, 0xdb, 0x8e, 0xcf, 0x9c, 0x81, 0x6a, 0x37, 0x24, 0xca, 0x16, 0x10, 0xef, 0x71, 0x5e, 0x52, 0xf7, 0x08, 0xfa, 0x12, 0x36, 0x92, 0xc6, 0x39,
0x26, 0xbe, 0x4f, 0xd3, 0xa2, 0x7e, 0x15, 0x23, 0xf6, 0x24, 0x00, 0x71, 0xb0, 0x7a, 0x3e, 0x71, 0x60, 0x4c, 0x70, 0x11, 0x91, 0xd0, 0x1e, 0xd1, 0x99, 0x9c, 0xbc, 0xd6, 0x2e, 0x1b, 0xed, 0xf7,
0x06, 0xbe, 0xc7, 0xe5, 0xff, 0x52, 0xa9, 0xb9, 0x59, 0x76, 0x0c, 0xa9, 0xdb, 0xce, 0x15, 0xde, 0x03, 0x27, 0x9a, 0x29, 0x1f, 0x7f, 0x42, 0x67, 0x78, 0x5d, 0x0b, 0xe8, 0x26, 0xfc, 0x4f, 0xe8,
0x6a, 0x75, 0xe6, 0xdc, 0xd4, 0x14, 0xae, 0x33, 0xea, 0xdb, 0xbd, 0xec, 0x5b, 0xd4, 0x81, 0xca, 0x8c, 0xa3, 0x0f, 0x61, 0x93, 0x2e, 0x60, 0x52, 0xa2, 0xed, 0x93, 0xb1, 0x1c, 0x09, 0x6c, 0xc7,
0x28, 0x90, 0xcf, 0xc7, 0x3e, 0x28, 0xdf, 0xd4, 0x07, 0x10, 0xb3, 0x94, 0xe5, 0x1b, 0x60, 0x1e, 0x67, 0xce, 0x48, 0x79, 0xde, 0xc4, 0x0f, 0x69, 0x5a, 0xd4, 0xa7, 0x31, 0x62, 0x4f, 0x02, 0x10,
0xcb, 0x19, 0x46, 0xb6, 0x91, 0x52, 0x1c, 0x5c, 0xbf, 0xec, 0x1e, 0x1e, 0x61, 0x75, 0x8a, 0x5a, 0x07, 0x6b, 0xe0, 0x13, 0x67, 0xe4, 0x7b, 0x5c, 0xfe, 0xf7, 0x96, 0x9a, 0xd4, 0x65, 0x63, 0x91,
0x80, 0x5c, 0x7a, 0x4c, 0x46, 0xbe, 0x68, 0xc7, 0xb5, 0xe5, 0x90, 0x31, 0x5f, 0xf5, 0x8c, 0x32, 0xba, 0xed, 0x5c, 0xe1, 0xad, 0x76, 0x77, 0xc9, 0x4d, 0xcd, 0xfd, 0x3a, 0xf1, 0xbe, 0x3d, 0xc8,
0xce, 0xb8, 0x41, 0x75, 0x00, 0x3e, 0xea, 0x05, 0x54, 0x1c, 0x79, 0x7f, 0xa4, 0xaa, 0x31, 0xac, 0xbe, 0x45, 0x5d, 0x28, 0x4f, 0x02, 0xf9, 0x7c, 0xec, 0x83, 0xd2, 0x4d, 0x7d, 0x00, 0x31, 0x4b,
0xe0, 0xd4, 0x49, 0x6d, 0x0c, 0x1b, 0x57, 0x99, 0x9a, 0x51, 0x09, 0x1e, 0xa5, 0x2b, 0x41, 0x65, 0x59, 0xbe, 0x09, 0xe6, 0xb1, 0x1c, 0x75, 0x64, 0xb7, 0x29, 0xc6, 0x31, 0xf8, 0x8b, 0xfe, 0xc1,
0xfb, 0xf3, 0x2c, 0xeb, 0xb2, 0x45, 0xa6, 0xaa, 0x46, 0x66, 0x92, 0xfc, 0xd5, 0x80, 0xc2, 0x11, 0x21, 0x56, 0xa7, 0xa8, 0x0d, 0xc8, 0xa5, 0xc7, 0x64, 0xe2, 0x8b, 0x4e, 0x5c, 0x82, 0x0e, 0x18,
0x75, 0x22, 0x2a, 0x3e, 0x6a, 0x8e, 0xec, 0x9c, 0xcb, 0x91, 0x7a, 0xf6, 0xd8, 0x2d, 0x5f, 0x5d, 0xf3, 0x55, 0x6b, 0x29, 0xe1, 0x8c, 0x1b, 0xd4, 0x00, 0xe0, 0x93, 0x41, 0x40, 0xc5, 0xa1, 0xf7,
0x48, 0x91, 0x1a, 0x94, 0xbc, 0x40, 0xd0, 0x28, 0x20, 0xbe, 0xca, 0x91, 0x12, 0x9e, 0xed, 0xb3, 0x1b, 0xaa, 0xfa, 0x47, 0x15, 0xa7, 0x4e, 0x56, 0xfe, 0x75, 0xa8, 0xae, 0xfe, 0xeb, 0x50, 0x9f,
0xb3, 0xdc, 0x80, 0x42, 0x3c, 0x97, 0xde, 0xb5, 0x01, 0xf1, 0xab, 0x17, 0x0d, 0xc8, 0x54, 0xf2, 0xc2, 0xe6, 0x55, 0xee, 0xc8, 0x28, 0x2a, 0x1f, 0xa5, 0x8b, 0x4a, 0xf9, 0xc9, 0xbb, 0x59, 0x1e,
0xdf, 0x06, 0x94, 0x92, 0xf6, 0xf8, 0x51, 0xd5, 0xbc, 0x30, 0xe7, 0xe5, 0xff, 0xe7, 0x39, 0x0f, 0xc8, 0x16, 0x99, 0x2a, 0x40, 0x99, 0x89, 0xf4, 0x17, 0x03, 0xf2, 0x87, 0xd4, 0x89, 0xa8, 0x78,
0x81, 0x39, 0xf0, 0x02, 0x3d, 0x91, 0x62, 0xb5, 0x46, 0x2d, 0x28, 0x86, 0x64, 0xe2, 0x33, 0xe2, 0xa3, 0x79, 0xb4, 0x73, 0x2e, 0x8f, 0x1a, 0xd9, 0x83, 0xbe, 0x7c, 0x75, 0x25, 0x8d, 0xea, 0x50,
0xea, 0xb2, 0xbc, 0xb6, 0xf0, 0x9b, 0x48, 0x3b, 0x98, 0xe0, 0x04, 0xb4, 0xbb, 0x76, 0x72, 0xda, 0xf4, 0x02, 0x41, 0xa3, 0x80, 0xf8, 0x2a, 0x8f, 0x8a, 0x78, 0xb1, 0xcf, 0x34, 0xe0, 0x0f, 0x06,
0x5c, 0x85, 0x6a, 0xda, 0xf2, 0xd7, 0x46, 0xf3, 0x1f, 0x06, 0x94, 0x0f, 0xfe, 0x20, 0x68, 0xa0, 0xe4, 0xe3, 0x11, 0xf7, 0xae, 0x0d, 0x88, 0x5f, 0xbd, 0x68, 0x40, 0xa6, 0x92, 0xff, 0x31, 0xa0,
0xa6, 0x8f, 0xff, 0x4b, 0xe3, 0x37, 0x17, 0x7f, 0x37, 0x29, 0x9f, 0xfb, 0x49, 0x24, 0xeb, 0xa3, 0x98, 0x74, 0xda, 0x37, 0xaa, 0xe6, 0x85, 0x91, 0x71, 0xed, 0x7f, 0x1e, 0x19, 0x11, 0x98, 0x23,
0x76, 0xac, 0xf7, 0x1f, 0xea, 0xf7, 0xfe, 0xf9, 0xa1, 0x7e, 0xef, 0xed, 0xb4, 0x6e, 0xbc, 0x9f, 0x2f, 0xd0, 0xc3, 0x2d, 0x56, 0x6b, 0xd4, 0x86, 0x42, 0x48, 0x66, 0x3e, 0x23, 0xae, 0xae, 0xf0,
0xd6, 0x8d, 0xbf, 0x4f, 0xeb, 0xc6, 0xbf, 0xa6, 0x75, 0xa3, 0x57, 0x50, 0xfe, 0xf9, 0xd1, 0x7f, 0xeb, 0x2b, 0xbf, 0xd4, 0x74, 0x82, 0x19, 0x4e, 0x40, 0xbb, 0xeb, 0x27, 0xa7, 0xad, 0x07, 0x50,
0x03, 0x00, 0x00, 0xff, 0xff, 0xbc, 0x6b, 0x9b, 0xd8, 0xfe, 0x13, 0x00, 0x00, 0x4b, 0x5b, 0xfe, 0xd2, 0x68, 0xfd, 0xd3, 0x80, 0xd2, 0xfe, 0xaf, 0x05, 0x0d, 0xd4, 0x20, 0xf3,
0x7f, 0x69, 0xfc, 0xd6, 0xea, 0xaf, 0x39, 0xa5, 0x73, 0x3f, 0xd4, 0x64, 0x7d, 0xd4, 0xae, 0xf5,
0xea, 0x75, 0xe3, 0xde, 0xbf, 0x5e, 0x37, 0xee, 0xfd, 0x76, 0xde, 0x30, 0x5e, 0xcd, 0x1b, 0xc6,
0x3f, 0xe6, 0x0d, 0xe3, 0xdf, 0xf3, 0x86, 0x31, 0xc8, 0x2b, 0xff, 0xfc, 0xf0, 0xbf, 0x01, 0x00,
0x00, 0xff, 0xff, 0xc3, 0x37, 0x09, 0x2f, 0x94, 0x14, 0x00, 0x00,
} }

View File

@ -81,6 +81,10 @@ message Node {
// endpoint on the node to be used for load balancing. Each overlay // endpoint on the node to be used for load balancing. Each overlay
// network, including ingress network, will have an NetworkAttachment. // network, including ingress network, will have an NetworkAttachment.
repeated NetworkAttachment attachments = 10; repeated NetworkAttachment attachments = 10;
// VXLANUDPPort specifies the UDP port for VXLAN traffic.
// This information is passed from cluster object to individual nodes.
uint32 VXLANUDPPort = 11;
} }
message Service { message Service {
@ -122,6 +126,16 @@ message Service {
// UpdateStatus contains the status of an update, if one is in // UpdateStatus contains the status of an update, if one is in
// progress. // progress.
UpdateStatus update_status = 5; UpdateStatus update_status = 5;
// PendingDelete indicates that this service's deletion has been requested.
// Services, as well as all service-level resources, can only be deleted
// after all of the service's containers have properly shut down.
// When a user requests a deletion, we just flip this flag
// the deallocator will take it from there - it will start monitoring
// this service's tasks, and proceed to delete the service itself (and
// potentially its associated resources also marked for deletion) when
// all of its tasks are gone
bool pending_delete = 7;
} }
// Endpoint specified all the network parameters required to // Endpoint specified all the network parameters required to
@ -292,6 +306,20 @@ message Network {
// Runtime state of IPAM options. This may not reflect the // Runtime state of IPAM options. This may not reflect the
// ipam options from NetworkSpec. // ipam options from NetworkSpec.
IPAMOptions ipam = 5 [(gogoproto.customname) = "IPAM"]; IPAMOptions ipam = 5 [(gogoproto.customname) = "IPAM"];
// PendingDelete indicates that this network's deletion has been requested.
// Services, as well as all service-level resources, can only be deleted
// after all the service's containers have properly shut down
// when a user requests a deletion, we just flip this flag
// the deallocator will take it from there
// PendingDelete indicates that this network's deletion has been requested.
// Services, as well as all service-level resources, can only be deleted
// after all of the service's containers have properly shut down.
// When a user requests a deletion of this network, we just flip this flag
// the deallocator will take it from there - it will start monitoring
// the services that still use this service, and proceed to delete
// this network when all of these services are gone
bool pending_delete = 6;
} }
// Cluster provides global cluster settings. // Cluster provides global cluster settings.
@ -351,6 +379,9 @@ message Cluster {
// This flag specifies the default subnet size of global scope networks by giving // This flag specifies the default subnet size of global scope networks by giving
// the length of the subnet masks for every such network // the length of the subnet masks for every such network
uint32 subnetSize = 12; uint32 subnetSize = 12;
// VXLANUDPPort specifies the UDP port for VXLAN traffic.
uint32 VXLANUDPPort = 13;
} }
// Secret represents a secret that should be passed to a container or a node, // Secret represents a secret that should be passed to a container or a node,

View File

@ -987,6 +987,8 @@ type Mount_TmpfsOptions struct {
SizeBytes int64 `protobuf:"varint,1,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"` SizeBytes int64 `protobuf:"varint,1,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"`
// Mode of the tmpfs upon creation // Mode of the tmpfs upon creation
Mode os.FileMode `protobuf:"varint,2,opt,name=mode,proto3,customtype=os.FileMode" json:"mode"` Mode os.FileMode `protobuf:"varint,2,opt,name=mode,proto3,customtype=os.FileMode" json:"mode"`
// Options passed to tmpfs mount
Options string `protobuf:"bytes,3,opt,name=options,proto3" json:"options,omitempty"`
} }
func (m *Mount_TmpfsOptions) Reset() { *m = Mount_TmpfsOptions{} } func (m *Mount_TmpfsOptions) Reset() { *m = Mount_TmpfsOptions{} }
@ -1612,6 +1614,8 @@ type Placement struct {
// This field is used in the platform filter for scheduling. If empty, // This field is used in the platform filter for scheduling. If empty,
// then the platform filter is off, meaning there are no scheduling restrictions. // then the platform filter is off, meaning there are no scheduling restrictions.
Platforms []*Platform `protobuf:"bytes,3,rep,name=platforms" json:"platforms,omitempty"` Platforms []*Platform `protobuf:"bytes,3,rep,name=platforms" json:"platforms,omitempty"`
// MaxReplicas specifies the limit for maximum number of replicas running on one node.
MaxReplicas uint64 `protobuf:"varint,4,opt,name=max_replicas,json=maxReplicas,proto3" json:"max_replicas,omitempty"`
} }
func (m *Placement) Reset() { *m = Placement{} } func (m *Placement) Reset() { *m = Placement{} }
@ -4344,6 +4348,12 @@ func (m *Mount_TmpfsOptions) MarshalTo(dAtA []byte) (int, error) {
i++ i++
i = encodeVarintTypes(dAtA, i, uint64(m.Mode)) i = encodeVarintTypes(dAtA, i, uint64(m.Mode))
} }
if len(m.Options) > 0 {
dAtA[i] = 0x1a
i++
i = encodeVarintTypes(dAtA, i, uint64(len(m.Options)))
i += copy(dAtA[i:], m.Options)
}
return i, nil return i, nil
} }
@ -5482,6 +5492,11 @@ func (m *Placement) MarshalTo(dAtA []byte) (int, error) {
i += n i += n
} }
} }
if m.MaxReplicas != 0 {
dAtA[i] = 0x20
i++
i = encodeVarintTypes(dAtA, i, uint64(m.MaxReplicas))
}
return i, nil return i, nil
} }
@ -6507,6 +6522,10 @@ func (m *Mount_TmpfsOptions) Size() (n int) {
if m.Mode != 0 { if m.Mode != 0 {
n += 1 + sovTypes(uint64(m.Mode)) n += 1 + sovTypes(uint64(m.Mode))
} }
l = len(m.Options)
if l > 0 {
n += 1 + l + sovTypes(uint64(l))
}
return n return n
} }
@ -7005,6 +7024,9 @@ func (m *Placement) Size() (n int) {
n += 1 + l + sovTypes(uint64(l)) n += 1 + l + sovTypes(uint64(l))
} }
} }
if m.MaxReplicas != 0 {
n += 1 + sovTypes(uint64(m.MaxReplicas))
}
return n return n
} }
@ -7610,6 +7632,7 @@ func (this *Mount_TmpfsOptions) String() string {
s := strings.Join([]string{`&Mount_TmpfsOptions{`, s := strings.Join([]string{`&Mount_TmpfsOptions{`,
`SizeBytes:` + fmt.Sprintf("%v", this.SizeBytes) + `,`, `SizeBytes:` + fmt.Sprintf("%v", this.SizeBytes) + `,`,
`Mode:` + fmt.Sprintf("%v", this.Mode) + `,`, `Mode:` + fmt.Sprintf("%v", this.Mode) + `,`,
`Options:` + fmt.Sprintf("%v", this.Options) + `,`,
`}`, `}`,
}, "") }, "")
return s return s
@ -7992,6 +8015,7 @@ func (this *Placement) String() string {
`Constraints:` + fmt.Sprintf("%v", this.Constraints) + `,`, `Constraints:` + fmt.Sprintf("%v", this.Constraints) + `,`,
`Preferences:` + strings.Replace(fmt.Sprintf("%v", this.Preferences), "PlacementPreference", "PlacementPreference", 1) + `,`, `Preferences:` + strings.Replace(fmt.Sprintf("%v", this.Preferences), "PlacementPreference", "PlacementPreference", 1) + `,`,
`Platforms:` + strings.Replace(fmt.Sprintf("%v", this.Platforms), "Platform", "Platform", 1) + `,`, `Platforms:` + strings.Replace(fmt.Sprintf("%v", this.Platforms), "Platform", "Platform", 1) + `,`,
`MaxReplicas:` + fmt.Sprintf("%v", this.MaxReplicas) + `,`,
`}`, `}`,
}, "") }, "")
return s return s
@ -10954,6 +10978,35 @@ func (m *Mount_TmpfsOptions) Unmarshal(dAtA []byte) error {
break break
} }
} }
case 3:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTypes
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= (uint64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthTypes
}
postIndex := iNdEx + intStringLen
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Options = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default: default:
iNdEx = preIndex iNdEx = preIndex
skippy, err := skipTypes(dAtA[iNdEx:]) skippy, err := skipTypes(dAtA[iNdEx:])
@ -14748,6 +14801,25 @@ func (m *Placement) Unmarshal(dAtA []byte) error {
return err return err
} }
iNdEx = postIndex iNdEx = postIndex
case 4:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field MaxReplicas", wireType)
}
m.MaxReplicas = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTypes
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.MaxReplicas |= (uint64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
default: default:
iNdEx = preIndex iNdEx = preIndex
skippy, err := skipTypes(dAtA[iNdEx:]) skippy, err := skipTypes(dAtA[iNdEx:])
@ -17083,326 +17155,327 @@ var (
func init() { proto.RegisterFile("github.com/docker/swarmkit/api/types.proto", fileDescriptorTypes) } func init() { proto.RegisterFile("github.com/docker/swarmkit/api/types.proto", fileDescriptorTypes) }
var fileDescriptorTypes = []byte{ var fileDescriptorTypes = []byte{
// 5135 bytes of a gzipped FileDescriptorProto // 5152 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x7a, 0x4d, 0x6c, 0x24, 0x49, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x5a, 0x4d, 0x70, 0x23, 0x49,
0x56, 0xbf, 0xeb, 0xd3, 0x55, 0xaf, 0xca, 0x76, 0x76, 0xb4, 0xb7, 0xc7, 0x5d, 0xdb, 0x63, 0xd7, 0x56, 0xb6, 0x64, 0x49, 0x96, 0x9e, 0x64, 0xbb, 0x3a, 0xdb, 0xdb, 0xe3, 0xd6, 0xf6, 0xd8, 0x9a,
0xe4, 0x4c, 0xef, 0xcc, 0xf6, 0xce, 0xbf, 0xfa, 0x6b, 0x77, 0xd5, 0x33, 0xf3, 0xdf, 0x9d, 0xa9, 0x9a, 0xe9, 0x9d, 0xd9, 0xde, 0x41, 0xfd, 0xb7, 0xbb, 0xd1, 0x33, 0xc3, 0xee, 0x8c, 0x7e, 0xca,
0x8f, 0x74, 0xbb, 0xb6, 0xed, 0xaa, 0x52, 0x54, 0xb9, 0x7b, 0xf7, 0x2f, 0xfd, 0x49, 0xd2, 0x99, 0xb6, 0xb6, 0x6d, 0x49, 0x91, 0x92, 0xbb, 0x77, 0x89, 0x80, 0xa2, 0x5c, 0x95, 0x96, 0x6b, 0x5c,
0xe1, 0x72, 0x8e, 0xb3, 0x32, 0x8a, 0xcc, 0x2c, 0xbb, 0x8b, 0x05, 0x31, 0xe2, 0x00, 0xc8, 0x27, 0xaa, 0x14, 0x55, 0x25, 0xbb, 0xc5, 0x42, 0x30, 0xc1, 0x01, 0x08, 0x9f, 0xe0, 0x02, 0xbb, 0x41,
0xf6, 0x02, 0xbb, 0x42, 0x46, 0x48, 0x70, 0xe3, 0xc0, 0x01, 0x24, 0x04, 0xa7, 0x41, 0x42, 0x68, 0x98, 0x20, 0x02, 0x6e, 0x7b, 0xe0, 0xc0, 0x81, 0x80, 0xd3, 0x10, 0x41, 0x10, 0x1b, 0x5c, 0x60,
0xc5, 0x05, 0x16, 0x24, 0xb4, 0x02, 0xc9, 0xb0, 0x3e, 0x70, 0x43, 0x70, 0x41, 0x5c, 0x38, 0xa0, 0x21, 0x02, 0x36, 0x20, 0xc2, 0xb0, 0x3e, 0x70, 0x23, 0xe0, 0x42, 0x70, 0xe1, 0x40, 0xe4, 0x4f,
0xf8, 0xc8, 0xac, 0x74, 0x75, 0xda, 0x9e, 0x61, 0xf7, 0x62, 0x57, 0xbc, 0xf7, 0x7b, 0x2f, 0x22, 0x95, 0xca, 0xea, 0xb2, 0xdd, 0xc3, 0xec, 0xc5, 0x56, 0xbe, 0xf7, 0xbd, 0x97, 0x99, 0x2f, 0x33,
0x5e, 0x44, 0xbc, 0x78, 0xef, 0x45, 0xc2, 0xbd, 0xa1, 0x1d, 0x1c, 0x4c, 0xf6, 0x6a, 0x26, 0x1d, 0x5f, 0xbe, 0xf7, 0xb2, 0xe0, 0xde, 0xc0, 0x0e, 0x0e, 0xc6, 0x7b, 0x55, 0x93, 0x0e, 0xef, 0x5b,
0xdd, 0xb7, 0xa8, 0x79, 0x48, 0xbc, 0xfb, 0xfe, 0xb1, 0xe1, 0x8d, 0x0e, 0xed, 0xe0, 0xbe, 0x31, 0xd4, 0x3c, 0x24, 0xde, 0x7d, 0xff, 0xd8, 0xf0, 0x86, 0x87, 0x76, 0x70, 0xdf, 0x18, 0xd9, 0xf7,
0xb6, 0xef, 0x07, 0xd3, 0x31, 0xf1, 0x6b, 0x63, 0x8f, 0x06, 0x14, 0x21, 0x01, 0xa8, 0x85, 0x80, 0x83, 0xc9, 0x88, 0xf8, 0xd5, 0x91, 0x47, 0x03, 0x8a, 0x90, 0x00, 0x54, 0x43, 0x40, 0xf5, 0xe8,
0xda, 0xd1, 0xc3, 0xca, 0xc6, 0x90, 0xd2, 0xa1, 0x43, 0xee, 0x73, 0xc4, 0xde, 0x64, 0xff, 0x7e, 0x61, 0x79, 0x7d, 0x40, 0xe9, 0xc0, 0x21, 0xf7, 0x39, 0x62, 0x6f, 0xbc, 0x7f, 0x3f, 0xb0, 0x87,
0x60, 0x8f, 0x88, 0x1f, 0x18, 0xa3, 0xb1, 0x10, 0xaa, 0xac, 0xcf, 0x03, 0xac, 0x89, 0x67, 0x04, 0xc4, 0x0f, 0x8c, 0xe1, 0x48, 0x08, 0x95, 0xd7, 0x66, 0x01, 0xd6, 0xd8, 0x33, 0x02, 0x9b, 0xba,
0x36, 0x75, 0x25, 0x7f, 0x75, 0x48, 0x87, 0x94, 0xff, 0xbc, 0xcf, 0x7e, 0x09, 0xaa, 0xba, 0x01, 0x92, 0xbf, 0x32, 0xa0, 0x03, 0xca, 0x7f, 0xde, 0x67, 0xbf, 0x04, 0x55, 0x5d, 0x87, 0x85, 0x67,
0x8b, 0xcf, 0x89, 0xe7, 0xdb, 0xd4, 0x45, 0xab, 0x90, 0xb3, 0x5d, 0x8b, 0xbc, 0x5c, 0x4b, 0x55, 0xc4, 0xf3, 0x6d, 0xea, 0xa2, 0x15, 0xc8, 0xda, 0xae, 0x45, 0x5e, 0xac, 0xa6, 0x2a, 0xa9, 0x77,
0x53, 0xef, 0x64, 0xb1, 0x68, 0xa8, 0x0f, 0x00, 0xda, 0xec, 0x87, 0xe6, 0x06, 0xde, 0x14, 0x29, 0x32, 0x58, 0x34, 0xd4, 0x07, 0x00, 0x2d, 0xf6, 0x43, 0x73, 0x03, 0x6f, 0x82, 0x14, 0x98, 0x3f,
0x90, 0x39, 0x24, 0x53, 0x8e, 0x28, 0x62, 0xf6, 0x93, 0x51, 0x8e, 0x0c, 0x67, 0x2d, 0x2d, 0x28, 0x24, 0x13, 0x8e, 0x28, 0x60, 0xf6, 0x93, 0x51, 0x8e, 0x0c, 0x67, 0x35, 0x2d, 0x28, 0x47, 0x86,
0x47, 0x86, 0xa3, 0xfe, 0x24, 0x05, 0xa5, 0xba, 0xeb, 0xd2, 0x80, 0xf7, 0xee, 0x23, 0x04, 0x59, 0xa3, 0xfe, 0x24, 0x05, 0xc5, 0x9a, 0xeb, 0xd2, 0x80, 0xf7, 0xee, 0x23, 0x04, 0x19, 0xd7, 0x18,
0xd7, 0x18, 0x11, 0x29, 0xc4, 0x7f, 0xa3, 0x26, 0xe4, 0x1d, 0x63, 0x8f, 0x38, 0xfe, 0x5a, 0xba, 0x12, 0x29, 0xc4, 0x7f, 0xa3, 0x06, 0xe4, 0x1c, 0x63, 0x8f, 0x38, 0xfe, 0x6a, 0xba, 0x32, 0xff,
0x9a, 0x79, 0xa7, 0xf4, 0xe8, 0x2b, 0xb5, 0x57, 0xa7, 0x5c, 0x8b, 0x29, 0xa9, 0x6d, 0x73, 0x34, 0x4e, 0xf1, 0xd1, 0x57, 0xaa, 0x2f, 0x4f, 0xb9, 0x1a, 0x53, 0x52, 0xdd, 0xe6, 0x68, 0x3e, 0x08,
0x1f, 0x04, 0x96, 0xa2, 0xe8, 0x9b, 0xb0, 0x68, 0xbb, 0x96, 0x6d, 0x12, 0x7f, 0x2d, 0xcb, 0xb5, 0x2c, 0x45, 0xd1, 0x37, 0x61, 0xc1, 0x76, 0x2d, 0xdb, 0x24, 0xfe, 0x6a, 0x86, 0x6b, 0x59, 0x4b,
0xac, 0x27, 0x69, 0x99, 0x8d, 0xbe, 0x91, 0xfd, 0xe1, 0xd9, 0xc6, 0x02, 0x0e, 0x85, 0x2a, 0xef, 0xd2, 0x32, 0x1d, 0x7d, 0x3d, 0xf3, 0xc3, 0xb3, 0xf5, 0x39, 0x1c, 0x0a, 0x95, 0xdf, 0x83, 0x62,
0x41, 0x29, 0xa6, 0x36, 0x61, 0x6e, 0xab, 0x90, 0x3b, 0x32, 0x9c, 0x09, 0x91, 0xb3, 0x13, 0x8d, 0x4c, 0x6d, 0xc2, 0xdc, 0x56, 0x20, 0x7b, 0x64, 0x38, 0x63, 0x22, 0x67, 0x27, 0x1a, 0xef, 0xa7,
0xf7, 0xd3, 0x4f, 0x52, 0xea, 0x47, 0xb0, 0xda, 0x31, 0x46, 0xc4, 0x7a, 0x4a, 0x5c, 0xe2, 0xd9, 0x9f, 0xa4, 0xd4, 0x8f, 0x60, 0xa5, 0x6d, 0x0c, 0x89, 0xb5, 0x49, 0x5c, 0xe2, 0xd9, 0x26, 0x26,
0x26, 0x26, 0x3e, 0x9d, 0x78, 0x26, 0x61, 0x73, 0x3d, 0xb4, 0x5d, 0x2b, 0x9c, 0x2b, 0xfb, 0x9d, 0x3e, 0x1d, 0x7b, 0x26, 0x61, 0x73, 0x3d, 0xb4, 0x5d, 0x2b, 0x9c, 0x2b, 0xfb, 0x9d, 0xac, 0x45,
0xac, 0x45, 0x6d, 0xc2, 0x6b, 0x2d, 0xdb, 0x37, 0x3d, 0x12, 0x90, 0xcf, 0xad, 0x24, 0x13, 0x2a, 0x6d, 0xc0, 0x6b, 0x4d, 0xdb, 0x37, 0x3d, 0x12, 0x90, 0xcf, 0xac, 0x64, 0x3e, 0x54, 0x72, 0x96,
0x39, 0x4b, 0xc1, 0xca, 0xbc, 0xf4, 0xff, 0x83, 0x9b, 0xcc, 0xc4, 0x96, 0xee, 0x49, 0x8a, 0xee, 0x82, 0xe5, 0x59, 0xe9, 0x9f, 0x83, 0x9b, 0xcc, 0xc4, 0x96, 0xee, 0x49, 0x8a, 0xee, 0x8f, 0x88,
0x8f, 0x89, 0xc9, 0x95, 0x95, 0x1e, 0xbd, 0x93, 0x64, 0xa1, 0xa4, 0x99, 0x6c, 0x2d, 0xe0, 0x1b, 0xc9, 0x95, 0x15, 0x1f, 0xbd, 0x93, 0x64, 0xa1, 0xa4, 0x99, 0x6c, 0xcd, 0xe1, 0x1b, 0x5c, 0x4d,
0x5c, 0x4d, 0x48, 0xe8, 0x8f, 0x89, 0x89, 0x4c, 0xb8, 0x65, 0xc9, 0x41, 0xcf, 0xa9, 0x4f, 0x73, 0x48, 0xe8, 0x8d, 0x88, 0x89, 0x4c, 0xb8, 0x65, 0xc9, 0x41, 0xcf, 0xa8, 0x4f, 0x73, 0xf5, 0x89,
0xf5, 0x89, 0xcb, 0x78, 0xc9, 0x34, 0xb7, 0x16, 0xf0, 0x6a, 0xa8, 0x2c, 0xde, 0x49, 0x03, 0xa0, 0xcb, 0x78, 0xc9, 0x34, 0xb7, 0xe6, 0xf0, 0x4a, 0xa8, 0x2c, 0xde, 0x49, 0x1d, 0x20, 0x1f, 0xea,
0x10, 0xea, 0x56, 0xbf, 0x9f, 0x82, 0x62, 0xc8, 0xf4, 0xd1, 0x97, 0xa1, 0xe8, 0x1a, 0x2e, 0xd5, 0x56, 0xbf, 0x97, 0x82, 0x42, 0xc8, 0xf4, 0xd1, 0x97, 0xa1, 0xe0, 0x1a, 0x2e, 0xd5, 0xcd, 0xd1,
0xcd, 0xf1, 0xc4, 0xe7, 0x13, 0xca, 0x34, 0xca, 0xe7, 0x67, 0x1b, 0x85, 0x8e, 0xe1, 0xd2, 0x66, 0xd8, 0xe7, 0x13, 0x9a, 0xaf, 0x97, 0xce, 0xcf, 0xd6, 0xf3, 0x6d, 0xc3, 0xa5, 0x8d, 0xee, 0xae,
0x6f, 0xd7, 0xc7, 0x05, 0xc6, 0x6e, 0x8e, 0x27, 0x3e, 0x7a, 0x03, 0xca, 0x23, 0x32, 0xa2, 0xde, 0x8f, 0xf3, 0x8c, 0xdd, 0x18, 0x8d, 0x7d, 0xf4, 0x06, 0x94, 0x86, 0x64, 0x48, 0xbd, 0x89, 0xbe,
0x54, 0xdf, 0x9b, 0x06, 0xc4, 0x97, 0x66, 0x2b, 0x09, 0x5a, 0x83, 0x91, 0xd0, 0x37, 0x60, 0x71, 0x37, 0x09, 0x88, 0x2f, 0xcd, 0x56, 0x14, 0xb4, 0x3a, 0x23, 0xa1, 0x6f, 0xc0, 0xc2, 0x40, 0x0c,
0x28, 0x86, 0xb4, 0x96, 0xe1, 0xdb, 0xe7, 0xcd, 0xa4, 0xd1, 0xcf, 0x8d, 0x1a, 0x87, 0x32, 0xea, 0x69, 0x75, 0x9e, 0x6f, 0x9f, 0x37, 0x93, 0x46, 0x3f, 0x33, 0x6a, 0x1c, 0xca, 0xa8, 0xbf, 0x9d,
0x6f, 0xa6, 0x60, 0x35, 0xa2, 0x92, 0x5f, 0x98, 0xd8, 0x1e, 0x19, 0x11, 0x37, 0xf0, 0xd1, 0xd7, 0x82, 0x95, 0x88, 0x4a, 0x7e, 0x69, 0x6c, 0x7b, 0x64, 0x48, 0xdc, 0xc0, 0x47, 0x5f, 0x83, 0x9c,
0x20, 0xef, 0xd8, 0x23, 0x3b, 0xf0, 0xa5, 0xcd, 0x5f, 0x4f, 0x52, 0x1b, 0x4d, 0x0a, 0x4b, 0x30, 0x63, 0x0f, 0xed, 0xc0, 0x97, 0x36, 0x7f, 0x3d, 0x49, 0x6d, 0x34, 0x29, 0x2c, 0xc1, 0xa8, 0x06,
0xaa, 0x43, 0xd9, 0x23, 0x3e, 0xf1, 0x8e, 0xc4, 0x8e, 0x97, 0x16, 0xbd, 0x46, 0xf8, 0x82, 0x88, 0x25, 0x8f, 0xf8, 0xc4, 0x3b, 0x12, 0x3b, 0x5e, 0x5a, 0xf4, 0x1a, 0xe1, 0x0b, 0x22, 0xea, 0x06,
0xba, 0x09, 0x85, 0x9e, 0x63, 0x04, 0xfb, 0xd4, 0x1b, 0x21, 0x15, 0xca, 0x86, 0x67, 0x1e, 0xd8, 0xe4, 0xbb, 0x8e, 0x11, 0xec, 0x53, 0x6f, 0x88, 0x54, 0x28, 0x19, 0x9e, 0x79, 0x60, 0x07, 0xc4,
0x01, 0x31, 0x83, 0x89, 0x17, 0x9e, 0xbe, 0x0b, 0x34, 0x74, 0x0b, 0xd2, 0x54, 0x74, 0x54, 0x6c, 0x0c, 0xc6, 0x5e, 0x78, 0xfa, 0x2e, 0xd0, 0xd0, 0x2d, 0x48, 0x53, 0xd1, 0x51, 0xa1, 0x9e, 0x3b,
0xe4, 0xcf, 0xcf, 0x36, 0xd2, 0xdd, 0x3e, 0x4e, 0x53, 0x5f, 0xfd, 0x00, 0x6e, 0xf4, 0x9c, 0xc9, 0x3f, 0x5b, 0x4f, 0x77, 0x7a, 0x38, 0x4d, 0x7d, 0xf5, 0x03, 0xb8, 0xd1, 0x75, 0xc6, 0x03, 0xdb,
0xd0, 0x76, 0x5b, 0xc4, 0x37, 0x3d, 0x7b, 0xcc, 0xb4, 0xb3, 0x5d, 0xc9, 0x7c, 0x54, 0xb8, 0x2b, 0x6d, 0x12, 0xdf, 0xf4, 0xec, 0x11, 0xd3, 0xce, 0x76, 0x25, 0xf3, 0x51, 0xe1, 0xae, 0x64, 0xbf,
0xd9, 0xef, 0xe8, 0x68, 0xa7, 0x67, 0x47, 0x5b, 0xfd, 0xf5, 0x34, 0xdc, 0xd0, 0xdc, 0xa1, 0xed, 0xa3, 0xa3, 0x9d, 0x9e, 0x1e, 0x6d, 0xf5, 0x37, 0xd3, 0x70, 0x43, 0x73, 0x07, 0xb6, 0x4b, 0xe2,
0x92, 0xb8, 0xf4, 0x5d, 0x58, 0x26, 0x9c, 0xa8, 0x1f, 0x09, 0x77, 0x23, 0xf5, 0x2c, 0x09, 0x6a, 0xd2, 0x77, 0x61, 0x89, 0x70, 0xa2, 0x7e, 0x24, 0xdc, 0x8d, 0xd4, 0xb3, 0x28, 0xa8, 0xa1, 0x0f,
0xe8, 0x83, 0xda, 0x73, 0x7e, 0xe1, 0x61, 0xd2, 0xf4, 0x5f, 0xd1, 0x9e, 0xe8, 0x1d, 0x34, 0x58, 0x6a, 0xcd, 0xf8, 0x85, 0x87, 0x49, 0xd3, 0x7f, 0x49, 0x7b, 0xa2, 0x77, 0xd0, 0x60, 0x61, 0xc4,
0x1c, 0xf3, 0x49, 0xf8, 0x72, 0x79, 0xef, 0x26, 0xe9, 0x7a, 0x65, 0x9e, 0xa1, 0x93, 0x90, 0xb2, 0x27, 0xe1, 0xcb, 0xe5, 0xbd, 0x9b, 0xa4, 0xeb, 0xa5, 0x79, 0x86, 0x4e, 0x42, 0xca, 0x7e, 0x1e,
0x3f, 0x8d, 0x93, 0xf8, 0xeb, 0x34, 0xac, 0x74, 0xa8, 0x75, 0xc1, 0x0e, 0x15, 0x28, 0x1c, 0x50, 0x27, 0xf1, 0x37, 0x69, 0x58, 0x6e, 0x53, 0xeb, 0x82, 0x1d, 0xca, 0x90, 0x3f, 0xa0, 0x7e, 0x10,
0x3f, 0x88, 0x39, 0xc4, 0xa8, 0x8d, 0x9e, 0x40, 0x61, 0x2c, 0x97, 0x4f, 0xae, 0xfe, 0x9d, 0xe4, 0x73, 0x88, 0x51, 0x1b, 0x3d, 0x81, 0xfc, 0x48, 0x2e, 0x9f, 0x5c, 0xfd, 0x3b, 0xc9, 0x43, 0x16,
0x21, 0x0b, 0x0c, 0x8e, 0xd0, 0xe8, 0x03, 0x28, 0x86, 0x47, 0x86, 0xcd, 0xf6, 0x33, 0x6c, 0x9c, 0x18, 0x1c, 0xa1, 0xd1, 0x07, 0x50, 0x08, 0x8f, 0x0c, 0x9b, 0xed, 0x2b, 0x6c, 0x9c, 0x29, 0x1e,
0x19, 0x1e, 0x7d, 0x03, 0xf2, 0x62, 0x11, 0xd6, 0xb2, 0x5c, 0xf2, 0xee, 0x67, 0xb2, 0x39, 0x96, 0x7d, 0x03, 0x72, 0x62, 0x11, 0x56, 0x33, 0x5c, 0xf2, 0xee, 0x2b, 0xd9, 0x1c, 0x4b, 0x21, 0xb4,
0x42, 0xe8, 0x29, 0x14, 0x02, 0xc7, 0xd7, 0x6d, 0x77, 0x9f, 0xae, 0xe5, 0xb8, 0x82, 0x8d, 0x44, 0x09, 0xf9, 0xc0, 0xf1, 0x75, 0xdb, 0xdd, 0xa7, 0xab, 0x59, 0xae, 0x60, 0x3d, 0xd1, 0xc9, 0x50,
0x27, 0x43, 0x2d, 0x32, 0xd8, 0xee, 0xb7, 0xdd, 0x7d, 0xda, 0x28, 0x9d, 0x9f, 0x6d, 0x2c, 0xca, 0x8b, 0xf4, 0xb7, 0x7b, 0x2d, 0x77, 0x9f, 0xd6, 0x8b, 0xe7, 0x67, 0xeb, 0x0b, 0xb2, 0x81, 0x17,
0x06, 0x5e, 0x0c, 0x1c, 0x9f, 0xfd, 0x40, 0x77, 0x20, 0xbb, 0x6f, 0x8f, 0xfd, 0xb5, 0x7c, 0x35, 0x02, 0xc7, 0x67, 0x3f, 0xd0, 0x1d, 0xc8, 0xec, 0xdb, 0x23, 0x7f, 0x35, 0x57, 0x49, 0xbd, 0x93,
0xf5, 0x4e, 0xa1, 0x51, 0x38, 0x3f, 0xdb, 0xc8, 0x6e, 0xb6, 0x7b, 0x7d, 0xcc, 0xa9, 0xea, 0xf7, 0xaf, 0xe7, 0xcf, 0xcf, 0xd6, 0x33, 0x1b, 0xad, 0x6e, 0x0f, 0x73, 0xaa, 0xfa, 0x3b, 0x29, 0x28,
0x52, 0x50, 0x8a, 0xe9, 0x40, 0xaf, 0x03, 0x04, 0xde, 0xc4, 0x0f, 0x74, 0x8f, 0xd2, 0x80, 0x9b, 0xc6, 0x74, 0xa0, 0xd7, 0x01, 0x02, 0x6f, 0xec, 0x07, 0xba, 0x47, 0x69, 0xc0, 0x4d, 0x59, 0xc2,
0xb2, 0x8c, 0x8b, 0x9c, 0x82, 0x29, 0x0d, 0x50, 0x0d, 0x6e, 0x9a, 0xc4, 0x0b, 0x74, 0xdb, 0xf7, 0x05, 0x4e, 0xc1, 0x94, 0x06, 0xa8, 0x0a, 0x37, 0x4d, 0xe2, 0x05, 0xba, 0xed, 0xfb, 0x63, 0xe2,
0x27, 0xc4, 0xd3, 0xfd, 0xc9, 0xde, 0xc7, 0xc4, 0x0c, 0xb8, 0x59, 0xcb, 0xf8, 0x06, 0x63, 0xb5, 0xe9, 0xfe, 0x78, 0xef, 0x63, 0x62, 0x06, 0xdc, 0xac, 0x25, 0x7c, 0x83, 0xb1, 0x5a, 0x9c, 0xd3,
0x39, 0xa7, 0x2f, 0x18, 0xe8, 0x31, 0xdc, 0x8a, 0xe3, 0xc7, 0x93, 0x3d, 0xc7, 0x36, 0x75, 0xb6, 0x13, 0x0c, 0xf4, 0x18, 0x6e, 0xc5, 0xf1, 0xa3, 0xf1, 0x9e, 0x63, 0x9b, 0x3a, 0x5b, 0xea, 0x79,
0xd4, 0x19, 0x2e, 0x72, 0x73, 0x26, 0xd2, 0xe3, 0xbc, 0x67, 0x64, 0xaa, 0xfe, 0x38, 0x05, 0x0a, 0x2e, 0x72, 0x73, 0x2a, 0xd2, 0xe5, 0xbc, 0xa7, 0x64, 0xa2, 0xfe, 0x38, 0x05, 0x0a, 0x36, 0xf6,
0x36, 0xf6, 0x83, 0x1d, 0x32, 0xda, 0x23, 0x5e, 0x3f, 0x30, 0x82, 0x89, 0x8f, 0x6e, 0x41, 0xde, 0x83, 0x1d, 0x32, 0xdc, 0x23, 0x5e, 0x2f, 0x30, 0x82, 0xb1, 0x8f, 0x6e, 0x41, 0xce, 0x21, 0x86,
0x21, 0x86, 0x45, 0x3c, 0x3e, 0xa8, 0x02, 0x96, 0x2d, 0xb4, 0xcb, 0xce, 0xb7, 0x61, 0x1e, 0x18, 0x45, 0x3c, 0x3e, 0xa8, 0x3c, 0x96, 0x2d, 0xb4, 0xcb, 0xce, 0xb7, 0x61, 0x1e, 0x18, 0x7b, 0xb6,
0x7b, 0xb6, 0x63, 0x07, 0x53, 0x3e, 0x94, 0xe5, 0xe4, 0x0d, 0x3e, 0xaf, 0xb3, 0x86, 0x63, 0x82, 0x63, 0x07, 0x13, 0x3e, 0x94, 0xa5, 0xe4, 0x0d, 0x3e, 0xab, 0xb3, 0x8a, 0x63, 0x82, 0xf8, 0x82,
0xf8, 0x82, 0x1a, 0xb4, 0x06, 0x8b, 0x23, 0xe2, 0xfb, 0xc6, 0x90, 0xf0, 0x91, 0x16, 0x71, 0xd8, 0x1a, 0xb4, 0x0a, 0x0b, 0x43, 0xe2, 0xfb, 0xc6, 0x80, 0xf0, 0x91, 0x16, 0x70, 0xd8, 0x54, 0x3f,
0x54, 0x3f, 0x80, 0x72, 0x5c, 0x0e, 0x95, 0x60, 0x71, 0xb7, 0xf3, 0xac, 0xd3, 0x7d, 0xd1, 0x51, 0x80, 0x52, 0x5c, 0x0e, 0x15, 0x61, 0x61, 0xb7, 0xfd, 0xb4, 0xdd, 0x79, 0xde, 0x56, 0xe6, 0xd0,
0x16, 0xd0, 0x0a, 0x94, 0x76, 0x3b, 0x58, 0xab, 0x37, 0xb7, 0xea, 0x8d, 0x6d, 0x4d, 0x49, 0xa1, 0x32, 0x14, 0x77, 0xdb, 0x58, 0xab, 0x35, 0xb6, 0x6a, 0xf5, 0x6d, 0x4d, 0x49, 0xa1, 0x45, 0x28,
0x25, 0x28, 0xce, 0x9a, 0x69, 0xf5, 0x8f, 0x53, 0x00, 0xcc, 0xdc, 0x72, 0x52, 0xef, 0x43, 0xce, 0x4c, 0x9b, 0x69, 0xf5, 0x4f, 0x53, 0x00, 0xcc, 0xdc, 0x72, 0x52, 0xef, 0x43, 0xd6, 0x0f, 0x8c,
0x0f, 0x8c, 0x40, 0xec, 0xd9, 0xe5, 0x47, 0x6f, 0x5d, 0xb6, 0xc2, 0x72, 0xbc, 0xec, 0x1f, 0xc1, 0x40, 0xec, 0xd9, 0xa5, 0x47, 0x6f, 0x5d, 0xb6, 0xc2, 0x72, 0xbc, 0xec, 0x1f, 0xc1, 0x42, 0x24,
0x42, 0x24, 0x3e, 0xc2, 0xf4, 0x85, 0x11, 0x32, 0xf7, 0x61, 0x58, 0x96, 0x27, 0x07, 0xce, 0x7f, 0x3e, 0xc2, 0xf4, 0x85, 0x11, 0x32, 0xf7, 0x61, 0x58, 0x96, 0x27, 0x07, 0xce, 0x7f, 0xab, 0x1f,
0xab, 0x1f, 0x40, 0x8e, 0x4b, 0x5f, 0x1c, 0x6e, 0x01, 0xb2, 0x2d, 0xf6, 0x2b, 0x85, 0x8a, 0x90, 0x40, 0x96, 0x4b, 0x5f, 0x1c, 0x6e, 0x1e, 0x32, 0x4d, 0xf6, 0x2b, 0x85, 0x0a, 0x90, 0xc5, 0x5a,
0xc3, 0x5a, 0xbd, 0xf5, 0x1d, 0x25, 0x8d, 0x14, 0x28, 0xb7, 0xda, 0xfd, 0x66, 0xb7, 0xd3, 0xd1, 0xad, 0xf9, 0x1d, 0x25, 0x8d, 0x14, 0x28, 0x35, 0x5b, 0xbd, 0x46, 0xa7, 0xdd, 0xd6, 0x1a, 0x7d,
0x9a, 0x03, 0xad, 0xa5, 0x64, 0xd4, 0xbb, 0x90, 0x6b, 0x8f, 0x98, 0xe6, 0x3b, 0xec, 0x40, 0xec, 0xad, 0xa9, 0xcc, 0xab, 0x77, 0x21, 0xdb, 0x1a, 0x32, 0xcd, 0x77, 0xd8, 0x81, 0xd8, 0x27, 0x1e,
0x13, 0x8f, 0xb8, 0x66, 0x78, 0xce, 0x66, 0x04, 0xf5, 0x7b, 0x65, 0xc8, 0xed, 0xd0, 0x89, 0x1b, 0x71, 0xcd, 0xf0, 0x9c, 0x4d, 0x09, 0xea, 0x0f, 0x4a, 0x90, 0xdd, 0xa1, 0x63, 0x37, 0x40, 0x8f,
0xa0, 0x47, 0x31, 0xa7, 0xb6, 0x9c, 0x1c, 0x3f, 0x70, 0x60, 0x6d, 0x30, 0x1d, 0x13, 0xe9, 0xf4, 0x62, 0x4e, 0x6d, 0x29, 0x39, 0x7e, 0xe0, 0xc0, 0x6a, 0x7f, 0x32, 0x22, 0xd2, 0xe9, 0xdd, 0x82,
0x6e, 0x41, 0x5e, 0x1c, 0x1d, 0x39, 0x1d, 0xd9, 0x62, 0xf4, 0xc0, 0xf0, 0x86, 0x24, 0x90, 0xf3, 0x9c, 0x38, 0x3a, 0x72, 0x3a, 0xb2, 0xc5, 0xe8, 0x81, 0xe1, 0x0d, 0x48, 0x20, 0xe7, 0x23, 0x5b,
0x91, 0x2d, 0xf4, 0x0e, 0xbb, 0xcf, 0x0c, 0x8b, 0xba, 0xce, 0x94, 0x9f, 0xb0, 0x82, 0xb8, 0xb4, 0xe8, 0x1d, 0x76, 0x9f, 0x19, 0x16, 0x75, 0x9d, 0x09, 0x3f, 0x61, 0x79, 0x71, 0x69, 0x61, 0x62,
0x30, 0x31, 0xac, 0xae, 0xeb, 0x4c, 0x71, 0xc4, 0x45, 0x5b, 0x50, 0xde, 0xb3, 0x5d, 0x4b, 0xa7, 0x58, 0x1d, 0xd7, 0x99, 0xe0, 0x88, 0x8b, 0xb6, 0xa0, 0xb4, 0x67, 0xbb, 0x96, 0x4e, 0x47, 0xe2,
0x63, 0x71, 0x05, 0xe4, 0x2e, 0x3f, 0x8f, 0x62, 0x54, 0x0d, 0xdb, 0xb5, 0xba, 0x02, 0x8c, 0x4b, 0x0a, 0xc8, 0x5e, 0x7e, 0x1e, 0xc5, 0xa8, 0xea, 0xb6, 0x6b, 0x75, 0x04, 0x18, 0x17, 0xf7, 0xa6,
0x7b, 0xb3, 0x06, 0xea, 0xc0, 0xf2, 0x11, 0x75, 0x26, 0x23, 0x12, 0xe9, 0xca, 0x73, 0x5d, 0x6f, 0x0d, 0xd4, 0x86, 0xa5, 0x23, 0xea, 0x8c, 0x87, 0x24, 0xd2, 0x95, 0xe3, 0xba, 0xde, 0xbe, 0x5c,
0x5f, 0xae, 0xeb, 0x39, 0xc7, 0x87, 0xda, 0x96, 0x8e, 0xe2, 0x4d, 0xf4, 0x0c, 0x96, 0x82, 0xd1, 0xd7, 0x33, 0x8e, 0x0f, 0xb5, 0x2d, 0x1e, 0xc5, 0x9b, 0xe8, 0x29, 0x2c, 0x06, 0xc3, 0xd1, 0xbe,
0x78, 0xdf, 0x8f, 0xd4, 0x2d, 0x72, 0x75, 0x5f, 0xba, 0xc2, 0x60, 0x0c, 0x1e, 0x6a, 0x2b, 0x07, 0x1f, 0xa9, 0x5b, 0xe0, 0xea, 0xbe, 0x74, 0x85, 0xc1, 0x18, 0x3c, 0xd4, 0x56, 0x0a, 0x62, 0x2d,
0xb1, 0x16, 0x7a, 0x0a, 0x25, 0x93, 0xba, 0xbe, 0xed, 0x07, 0xc4, 0x35, 0xa7, 0x6b, 0x05, 0x6e, 0xb4, 0x09, 0x45, 0x93, 0xba, 0xbe, 0xed, 0x07, 0xc4, 0x35, 0x27, 0xab, 0x79, 0x6e, 0xfb, 0x2b,
0xfb, 0x2b, 0x66, 0xd9, 0x9c, 0x81, 0x71, 0x5c, 0xb2, 0xf2, 0xab, 0x19, 0x28, 0xc5, 0x4c, 0x80, 0x66, 0xd9, 0x98, 0x82, 0x71, 0x5c, 0xb2, 0xfc, 0xeb, 0xf3, 0x50, 0x8c, 0x99, 0x00, 0xf5, 0xa0,
0xfa, 0x50, 0x1a, 0x7b, 0x74, 0x6c, 0x0c, 0xf9, 0x7d, 0x28, 0x17, 0xf5, 0xe1, 0x67, 0x32, 0x5f, 0x38, 0xf2, 0xe8, 0xc8, 0x18, 0xf0, 0xfb, 0x50, 0x2e, 0xea, 0xc3, 0x57, 0x32, 0x5f, 0xb5, 0x3b,
0xad, 0x37, 0x13, 0xc4, 0x71, 0x2d, 0xea, 0x69, 0x1a, 0x4a, 0x31, 0x26, 0xba, 0x07, 0x05, 0xdc, 0x15, 0xc4, 0x71, 0x2d, 0xea, 0x69, 0x1a, 0x8a, 0x31, 0x26, 0xba, 0x07, 0x79, 0xdc, 0xc5, 0xad,
0xc3, 0xed, 0xe7, 0xf5, 0x81, 0xa6, 0x2c, 0x54, 0xee, 0x9c, 0x9c, 0x56, 0xd7, 0xb8, 0xb6, 0xb8, 0x67, 0xb5, 0xbe, 0xa6, 0xcc, 0x95, 0xef, 0x9c, 0x9c, 0x56, 0x56, 0xb9, 0xb6, 0xb8, 0x82, 0xae,
0x82, 0x9e, 0x67, 0x1f, 0xb1, 0x3d, 0xfc, 0x0e, 0x2c, 0x86, 0xd0, 0x54, 0xe5, 0x8b, 0x27, 0xa7, 0x67, 0x1f, 0xb1, 0x3d, 0xfc, 0x0e, 0x2c, 0x84, 0xd0, 0x54, 0xf9, 0x8b, 0x27, 0xa7, 0x95, 0xd7,
0xd5, 0xd7, 0xe6, 0xa1, 0x31, 0x24, 0xee, 0x6f, 0xd5, 0xb1, 0xd6, 0x52, 0xd2, 0xc9, 0x48, 0xdc, 0x66, 0xa1, 0x31, 0x24, 0xee, 0x6d, 0xd5, 0xb0, 0xd6, 0x54, 0xd2, 0xc9, 0x48, 0xdc, 0x3b, 0x30,
0x3f, 0x30, 0x3c, 0x62, 0xa1, 0x2f, 0x41, 0x5e, 0x02, 0x33, 0x95, 0xca, 0xc9, 0x69, 0xf5, 0xd6, 0x3c, 0x62, 0xa1, 0x2f, 0x41, 0x4e, 0x02, 0xe7, 0xcb, 0xe5, 0x93, 0xd3, 0xca, 0xad, 0x59, 0xe0,
0x3c, 0x70, 0x86, 0xc3, 0xfd, 0xed, 0xfa, 0x73, 0x4d, 0xc9, 0x26, 0xe3, 0x70, 0xdf, 0x31, 0x8e, 0x14, 0x87, 0x7b, 0xdb, 0xb5, 0x67, 0x9a, 0x92, 0x49, 0xc6, 0xe1, 0x9e, 0x63, 0x1c, 0x11, 0xf4,
0x08, 0x7a, 0x0b, 0x72, 0x02, 0x96, 0xab, 0xdc, 0x3e, 0x39, 0xad, 0x7e, 0xe1, 0x15, 0x75, 0x0c, 0x16, 0x64, 0x05, 0x2c, 0x5b, 0xbe, 0x7d, 0x72, 0x5a, 0xf9, 0xc2, 0x4b, 0xea, 0x18, 0xaa, 0xbc,
0x55, 0x59, 0xfb, 0x8d, 0xdf, 0x5f, 0x5f, 0xf8, 0xf3, 0x3f, 0x58, 0x57, 0xe6, 0xd9, 0x95, 0xff, 0xfa, 0x5b, 0x7f, 0xb4, 0x36, 0xf7, 0x17, 0x7f, 0xbc, 0xa6, 0xcc, 0xb2, 0xcb, 0xff, 0x9b, 0x82,
0x4e, 0xc1, 0xd2, 0x85, 0xbd, 0x83, 0x54, 0xc8, 0xbb, 0xd4, 0xa4, 0x63, 0x71, 0x4d, 0x16, 0x1a, 0xc5, 0x0b, 0x7b, 0x07, 0xa9, 0x90, 0x73, 0xa9, 0x49, 0x47, 0xe2, 0x9a, 0xcc, 0xd7, 0xe1, 0xfc,
0x70, 0x7e, 0xb6, 0x91, 0xef, 0xd0, 0x26, 0x1d, 0x4f, 0xb1, 0xe4, 0xa0, 0x67, 0x73, 0x17, 0xfd, 0x6c, 0x3d, 0xd7, 0xa6, 0x0d, 0x3a, 0x9a, 0x60, 0xc9, 0x41, 0x4f, 0x67, 0x2e, 0xfa, 0xc7, 0xaf,
0xe3, 0xcf, 0xb8, 0x31, 0x13, 0xaf, 0xfa, 0x0f, 0x61, 0xc9, 0xf2, 0xec, 0x23, 0xe2, 0xe9, 0x26, 0xb8, 0x31, 0x13, 0xaf, 0xfa, 0x0f, 0x61, 0xd1, 0xf2, 0xec, 0x23, 0xe2, 0xe9, 0x26, 0x75, 0xf7,
0x75, 0xf7, 0xed, 0xa1, 0xbc, 0x02, 0x2b, 0x89, 0xd1, 0x28, 0x07, 0xe2, 0xb2, 0x10, 0x68, 0x72, 0xed, 0x81, 0xbc, 0x02, 0xcb, 0x89, 0xd1, 0x28, 0x07, 0xe2, 0x92, 0x10, 0x68, 0x70, 0xfc, 0xe7,
0xfc, 0x4f, 0x71, 0xc9, 0x57, 0x9e, 0x43, 0x39, 0xbe, 0xd5, 0xd9, 0xbd, 0xe4, 0xdb, 0xbf, 0x48, 0xb8, 0xe4, 0xcb, 0x23, 0x28, 0xc5, 0xb7, 0x3a, 0xbb, 0x97, 0x7c, 0xfb, 0x97, 0x89, 0x0c, 0x3b,
0x64, 0xd8, 0xc9, 0x83, 0x54, 0x5c, 0x64, 0x14, 0x11, 0x74, 0xbe, 0x0d, 0xd9, 0x11, 0xb5, 0x84, 0x79, 0x90, 0x8a, 0x0b, 0x8c, 0x22, 0x82, 0xce, 0xb7, 0x21, 0x33, 0xa4, 0x96, 0xd0, 0xb3, 0x58,
0x9e, 0xa5, 0xc6, 0x4d, 0x16, 0x6b, 0xfc, 0xe3, 0xd9, 0x46, 0x89, 0xfa, 0xb5, 0x4d, 0xdb, 0x21, 0xbf, 0xc9, 0x62, 0x8d, 0x7f, 0x3e, 0x5b, 0x2f, 0x52, 0xbf, 0xba, 0x61, 0x3b, 0x64, 0x87, 0x5a,
0x3b, 0xd4, 0x22, 0x98, 0x03, 0xd4, 0x1f, 0xa4, 0x20, 0xcb, 0x9c, 0x0e, 0xfa, 0x22, 0x64, 0x1b, 0x04, 0x73, 0x00, 0xf3, 0x9a, 0xe1, 0x59, 0x93, 0x7e, 0x5d, 0x36, 0xd5, 0xef, 0xa7, 0x20, 0xc3,
0xed, 0x4e, 0x4b, 0x59, 0xa8, 0xdc, 0x38, 0x39, 0xad, 0x2e, 0x71, 0x9b, 0x30, 0x06, 0xdb, 0xbc, 0xdc, 0x11, 0xfa, 0x22, 0x64, 0xea, 0xad, 0x76, 0x53, 0x99, 0x2b, 0xdf, 0x38, 0x39, 0xad, 0x2c,
0x68, 0x03, 0xf2, 0xcf, 0xbb, 0xdb, 0xbb, 0x3b, 0x6c, 0x7f, 0xdd, 0x3c, 0x39, 0xad, 0xae, 0x44, 0x72, 0x6b, 0x31, 0x06, 0xdb, 0xd6, 0x68, 0x1d, 0x72, 0xcf, 0x3a, 0xdb, 0xbb, 0x3b, 0x6c, 0xe7,
0x6c, 0x61, 0x35, 0xf4, 0x3a, 0xe4, 0x06, 0x3b, 0xbd, 0xcd, 0xbe, 0x92, 0xae, 0xa0, 0x93, 0xd3, 0xdd, 0x3c, 0x39, 0xad, 0x2c, 0x47, 0x6c, 0x61, 0x4f, 0xf4, 0x3a, 0x64, 0xfb, 0x3b, 0xdd, 0x8d,
0xea, 0x72, 0xc4, 0xe7, 0x83, 0x46, 0x6f, 0x40, 0xae, 0xd3, 0x6b, 0xf7, 0x34, 0x25, 0x53, 0xb9, 0x9e, 0x92, 0x2e, 0xa3, 0x93, 0xd3, 0xca, 0x52, 0xc4, 0xe7, 0xd3, 0x41, 0x6f, 0x40, 0xb6, 0xdd,
0x75, 0x72, 0x5a, 0x45, 0x11, 0x9b, 0xe7, 0x04, 0x3d, 0x7b, 0x4c, 0x2a, 0x37, 0xe4, 0xca, 0x17, 0x6d, 0x75, 0x35, 0x65, 0xbe, 0x7c, 0xeb, 0xe4, 0xb4, 0x82, 0x22, 0x36, 0xcf, 0x16, 0xba, 0xf6,
0x23, 0x9e, 0xfa, 0xa3, 0x14, 0x94, 0x62, 0x87, 0x92, 0x6d, 0xde, 0x96, 0xb6, 0x59, 0xdf, 0xdd, 0x88, 0x94, 0x6f, 0xc8, 0x3d, 0x51, 0x88, 0x78, 0xea, 0x8f, 0x52, 0x50, 0x8c, 0x1d, 0x57, 0xb6,
0x1e, 0x28, 0x0b, 0xb1, 0xcd, 0x1b, 0x83, 0xb4, 0xc8, 0xbe, 0x31, 0x71, 0x98, 0x2f, 0x84, 0x66, 0xad, 0x9b, 0xda, 0x46, 0x6d, 0x77, 0xbb, 0xaf, 0xcc, 0xc5, 0xb6, 0x75, 0x0c, 0xd2, 0x24, 0xfb,
0xb7, 0xd3, 0x6f, 0xf7, 0x07, 0x5a, 0x67, 0xa0, 0xa4, 0x2a, 0x6b, 0x27, 0xa7, 0xd5, 0xd5, 0x79, 0xc6, 0xd8, 0x61, 0x5e, 0x12, 0x1a, 0x9d, 0x76, 0xaf, 0xd5, 0xeb, 0x6b, 0xed, 0xbe, 0x92, 0x2a,
0xf0, 0xe6, 0xc4, 0x71, 0xd8, 0xf6, 0x6d, 0xd6, 0x9b, 0x5b, 0xfc, 0x3c, 0xcc, 0xb6, 0x6f, 0x0c, 0xaf, 0x9e, 0x9c, 0x56, 0x56, 0x66, 0xc1, 0x1b, 0x63, 0xc7, 0x61, 0x1b, 0xbb, 0x51, 0x6b, 0x6c,
0xd5, 0x34, 0xcc, 0x03, 0x62, 0xa1, 0x77, 0xa1, 0xd8, 0xd2, 0xb6, 0xb5, 0xa7, 0x75, 0x7e, 0x03, 0xf1, 0x93, 0x32, 0xdd, 0xd8, 0x31, 0x54, 0xc3, 0x30, 0x0f, 0x88, 0x85, 0xde, 0x85, 0x42, 0x53,
0x54, 0x5e, 0x3f, 0x39, 0xad, 0xde, 0x7e, 0xb5, 0x77, 0x87, 0x0c, 0x8d, 0x80, 0x58, 0x73, 0xdb, 0xdb, 0xd6, 0x36, 0x6b, 0xfc, 0x6e, 0x28, 0xbf, 0x7e, 0x72, 0x5a, 0xb9, 0xfd, 0x72, 0xef, 0x0e,
0x38, 0x06, 0x51, 0xff, 0x33, 0x0d, 0x4b, 0x98, 0x25, 0xd4, 0x5e, 0xd0, 0xa3, 0x8e, 0x6d, 0x4e, 0x19, 0x18, 0x01, 0xb1, 0x66, 0x36, 0x78, 0x0c, 0xa2, 0xfe, 0x77, 0x1a, 0x16, 0x31, 0x4b, 0xb5,
0x51, 0x0f, 0x8a, 0x26, 0x75, 0x2d, 0x3b, 0xe6, 0x4b, 0x1e, 0x5d, 0x12, 0x54, 0xcd, 0xa4, 0xc2, 0xbd, 0xa0, 0x4b, 0x1d, 0xdb, 0x9c, 0xa0, 0x2e, 0x14, 0x4c, 0xea, 0x5a, 0x76, 0xcc, 0xcb, 0x3c,
0x56, 0x33, 0x94, 0xc4, 0x33, 0x25, 0xe8, 0x3e, 0xe4, 0x2c, 0xe2, 0x18, 0x53, 0x19, 0xdd, 0xdd, 0xba, 0x24, 0xdc, 0x9a, 0x4a, 0x85, 0xad, 0x46, 0x28, 0x89, 0xa7, 0x4a, 0xd0, 0x7d, 0xc8, 0x5a,
0xae, 0x89, 0x94, 0xbd, 0x16, 0xa6, 0xec, 0xb5, 0x96, 0x4c, 0xd9, 0xb1, 0xc0, 0xf1, 0x2c, 0xc6, 0xc4, 0x31, 0x26, 0x32, 0xee, 0xbb, 0x5d, 0x15, 0xc9, 0x7c, 0x35, 0x4c, 0xe6, 0xab, 0x4d, 0x99,
0x78, 0xa9, 0x1b, 0x41, 0x40, 0x46, 0xe3, 0x40, 0x84, 0x76, 0x59, 0x5c, 0x1a, 0x19, 0x2f, 0xeb, 0xcc, 0x63, 0x81, 0xe3, 0xf9, 0x8d, 0xf1, 0x42, 0x37, 0x82, 0x80, 0x0c, 0x47, 0x81, 0xd8, 0x23,
0x92, 0x84, 0x1e, 0x42, 0xfe, 0xd8, 0x76, 0x2d, 0x7a, 0x2c, 0xa3, 0xb7, 0x2b, 0x94, 0x4a, 0xa0, 0x19, 0x5c, 0x1c, 0x1a, 0x2f, 0x6a, 0x92, 0x84, 0x1e, 0x42, 0xee, 0xd8, 0x76, 0x2d, 0x7a, 0x2c,
0x7a, 0xc2, 0xc2, 0x96, 0xb9, 0x61, 0xb2, 0x6d, 0xd6, 0xe9, 0x76, 0xb4, 0x70, 0x9b, 0x49, 0x7e, 0xe3, 0xba, 0x2b, 0x94, 0x4a, 0xa0, 0x7a, 0xc2, 0x02, 0x9a, 0x99, 0x61, 0xb2, 0x6d, 0xd6, 0xee,
0xd7, 0xed, 0x50, 0x97, 0xf9, 0x08, 0xe8, 0x76, 0xf4, 0xcd, 0x7a, 0x7b, 0x7b, 0x17, 0xb3, 0xad, 0xb4, 0xb5, 0x70, 0x9b, 0x49, 0x7e, 0xc7, 0x6d, 0x53, 0x97, 0x79, 0x0f, 0xe8, 0xb4, 0xf5, 0x8d,
0xb6, 0x7a, 0x72, 0x5a, 0x55, 0x22, 0xc8, 0xa6, 0x61, 0x3b, 0x2c, 0x9d, 0xb8, 0x0d, 0x99, 0x7a, 0x5a, 0x6b, 0x7b, 0x17, 0xb3, 0xad, 0xb6, 0x72, 0x72, 0x5a, 0x51, 0x22, 0xc8, 0x86, 0x61, 0x3b,
0xe7, 0x3b, 0x4a, 0xba, 0xa2, 0x9c, 0x9c, 0x56, 0xcb, 0x11, 0xbb, 0xee, 0x4e, 0x67, 0x76, 0x9f, 0x2c, 0xd1, 0xb8, 0x0d, 0xf3, 0xb5, 0xf6, 0x77, 0x94, 0x74, 0x59, 0x39, 0x39, 0xad, 0x94, 0x22,
0xef, 0x57, 0xfd, 0x9b, 0x0c, 0x94, 0x77, 0xc7, 0x96, 0x11, 0x10, 0x71, 0x16, 0x51, 0x15, 0x4a, 0x76, 0xcd, 0x9d, 0x4c, 0xed, 0x3e, 0xdb, 0xaf, 0xfa, 0xb7, 0xf3, 0x50, 0xda, 0x1d, 0x59, 0x46,
0x63, 0xc3, 0x33, 0x1c, 0x87, 0x38, 0xb6, 0x3f, 0x92, 0xc5, 0x88, 0x38, 0x09, 0xbd, 0xf7, 0x59, 0x40, 0xc4, 0x29, 0x45, 0x15, 0x28, 0x8e, 0x0c, 0xcf, 0x70, 0x1c, 0xe2, 0xd8, 0xfe, 0x50, 0x96,
0xcd, 0xd8, 0x28, 0xb0, 0xf3, 0xf5, 0xfd, 0x7f, 0xde, 0x48, 0x85, 0x06, 0xdd, 0x85, 0xe5, 0x7d, 0x29, 0xe2, 0x24, 0xf4, 0xde, 0xab, 0x9a, 0xb1, 0x9e, 0x67, 0x27, 0xef, 0x7b, 0xff, 0xba, 0x9e,
0x31, 0x5a, 0xdd, 0x30, 0xf9, 0xc2, 0x66, 0xf8, 0xc2, 0xd6, 0x92, 0x16, 0x36, 0x3e, 0xac, 0x9a, 0x0a, 0x0d, 0xba, 0x0b, 0x4b, 0xfb, 0x62, 0xb4, 0xba, 0x61, 0xf2, 0x85, 0x9d, 0xe7, 0x0b, 0x5b,
0x9c, 0x64, 0x9d, 0x4b, 0xe1, 0xa5, 0xfd, 0x78, 0x13, 0x3d, 0x86, 0xc5, 0x11, 0x75, 0xed, 0x80, 0x4d, 0x5a, 0xd8, 0xf8, 0xb0, 0xaa, 0x72, 0x92, 0x35, 0x2e, 0x85, 0x17, 0xf7, 0xe3, 0x4d, 0xf4,
0x7a, 0xd7, 0xaf, 0x42, 0x88, 0x44, 0xf7, 0xe0, 0x06, 0x5b, 0xdc, 0x70, 0x3c, 0x9c, 0xcd, 0xaf, 0x18, 0x16, 0x86, 0xd4, 0xb5, 0x03, 0xea, 0x5d, 0xbf, 0x0a, 0x21, 0x12, 0xdd, 0x83, 0x1b, 0x6c,
0xfc, 0x34, 0x5e, 0x19, 0x19, 0x2f, 0x65, 0x87, 0x98, 0x91, 0x51, 0x03, 0x72, 0xd4, 0x63, 0x31, 0x71, 0xc3, 0xf1, 0x70, 0x36, 0x0f, 0x06, 0xd2, 0x78, 0x79, 0x68, 0xbc, 0x90, 0x1d, 0x62, 0x46,
0x65, 0x9e, 0x0f, 0xf7, 0xdd, 0x6b, 0x87, 0x2b, 0x1a, 0x5d, 0x26, 0x83, 0x85, 0xa8, 0xfa, 0x75, 0x46, 0x75, 0xc8, 0x52, 0x8f, 0x45, 0x9b, 0x39, 0x3e, 0xdc, 0x77, 0xaf, 0x1d, 0xae, 0x68, 0x74,
0x58, 0xba, 0x30, 0x09, 0x16, 0x4a, 0xf5, 0xea, 0xbb, 0x7d, 0x4d, 0x59, 0x40, 0x65, 0x28, 0x34, 0x98, 0x0c, 0x16, 0xa2, 0xea, 0xd7, 0x61, 0xf1, 0xc2, 0x24, 0x58, 0x90, 0xd5, 0xad, 0xed, 0xf6,
0xbb, 0x9d, 0x41, 0xbb, 0xb3, 0xcb, 0x62, 0xc1, 0x32, 0x14, 0x70, 0x77, 0x7b, 0xbb, 0x51, 0x6f, 0x34, 0x65, 0x0e, 0x95, 0x20, 0xdf, 0xe8, 0xb4, 0xfb, 0xad, 0xf6, 0x2e, 0x8b, 0x12, 0x4b, 0x90,
0x3e, 0x53, 0xd2, 0x6a, 0x0d, 0x4a, 0x31, 0x6d, 0x68, 0x19, 0xa0, 0x3f, 0xe8, 0xf6, 0xf4, 0xcd, 0xc7, 0x9d, 0xed, 0xed, 0x7a, 0xad, 0xf1, 0x54, 0x49, 0xab, 0x55, 0x28, 0xc6, 0xb4, 0xa1, 0x25,
0x36, 0xee, 0x0f, 0x44, 0x24, 0xd9, 0x1f, 0xd4, 0xf1, 0x40, 0x12, 0x52, 0xea, 0xbf, 0xa7, 0xc3, 0x80, 0x5e, 0xbf, 0xd3, 0xd5, 0x37, 0x5a, 0xb8, 0xd7, 0x17, 0x31, 0x66, 0xaf, 0x5f, 0xc3, 0x7d,
0x15, 0x95, 0xc1, 0x63, 0xe3, 0x62, 0xf0, 0x78, 0xc5, 0xe0, 0x65, 0xf8, 0x38, 0x6b, 0x44, 0x41, 0x49, 0x48, 0xa9, 0xff, 0x99, 0x0e, 0x57, 0x54, 0x86, 0x95, 0xf5, 0x8b, 0x61, 0xe5, 0x15, 0x83,
0xe4, 0x7b, 0x00, 0x7c, 0xe3, 0x10, 0x4b, 0x37, 0x02, 0xb9, 0xf0, 0x95, 0x57, 0x8c, 0x3c, 0x08, 0x97, 0x81, 0xe5, 0xb4, 0x11, 0x85, 0x97, 0xef, 0x01, 0xf0, 0x8d, 0x43, 0x2c, 0xdd, 0x08, 0xe4,
0x6b, 0x62, 0xb8, 0x28, 0xd1, 0xf5, 0x00, 0x7d, 0x03, 0xca, 0x26, 0x1d, 0x8d, 0x1d, 0x22, 0x85, 0xc2, 0x97, 0x5f, 0x32, 0x72, 0x3f, 0xac, 0x96, 0xe1, 0x82, 0x44, 0xd7, 0x02, 0xf4, 0x0d, 0x28,
0x33, 0xd7, 0x0a, 0x97, 0x22, 0x7c, 0x3d, 0x88, 0x87, 0xaf, 0xd9, 0x8b, 0x01, 0xf6, 0xaf, 0xa5, 0x99, 0x74, 0x38, 0x72, 0x88, 0x14, 0x9e, 0xbf, 0x56, 0xb8, 0x18, 0xe1, 0x6b, 0x41, 0x3c, 0xb0,
0x42, 0xcb, 0x24, 0x44, 0xac, 0x65, 0x28, 0xec, 0xf6, 0x5a, 0xf5, 0x41, 0xbb, 0xf3, 0x54, 0x49, 0xcd, 0x5c, 0x0c, 0xbd, 0x7f, 0x23, 0x15, 0x5a, 0x26, 0x21, 0x96, 0x2d, 0x41, 0x7e, 0xb7, 0xdb,
0x21, 0x80, 0x3c, 0x37, 0x75, 0x4b, 0x49, 0xb3, 0x48, 0xbb, 0xd9, 0xdd, 0xe9, 0x6d, 0x6b, 0xdc, 0xac, 0xf5, 0x5b, 0xed, 0x4d, 0x25, 0x85, 0x00, 0x72, 0xdc, 0xd4, 0x4d, 0x25, 0xcd, 0x62, 0xf0,
0x63, 0xa1, 0x55, 0x50, 0x42, 0x63, 0xeb, 0xdc, 0x90, 0x5a, 0x4b, 0xc9, 0xa2, 0x9b, 0xb0, 0x12, 0x46, 0x67, 0xa7, 0xbb, 0xad, 0x71, 0x8f, 0x85, 0x56, 0x40, 0x09, 0x8d, 0xad, 0x73, 0x43, 0x6a,
0x51, 0xa5, 0x64, 0x0e, 0xdd, 0x02, 0x14, 0x11, 0x67, 0x2a, 0xf2, 0xea, 0x2f, 0xc3, 0x4a, 0x93, 0x4d, 0x25, 0x83, 0x6e, 0xc2, 0x72, 0x44, 0x95, 0x92, 0x59, 0x74, 0x0b, 0x50, 0x44, 0x9c, 0xaa,
0xba, 0x81, 0x61, 0xbb, 0x51, 0x16, 0xf2, 0x88, 0x4d, 0x5a, 0x92, 0x74, 0x5b, 0xd6, 0x92, 0x1a, 0xc8, 0xa9, 0xbf, 0x0a, 0xcb, 0x0d, 0xea, 0x06, 0x86, 0xed, 0x46, 0xf9, 0xc9, 0x23, 0x36, 0x69,
0x2b, 0xe7, 0x67, 0x1b, 0xa5, 0x08, 0xda, 0x6e, 0xf1, 0x70, 0x4a, 0x36, 0x2c, 0x76, 0x7e, 0xc7, 0x49, 0xd2, 0x6d, 0x59, 0x65, 0xaa, 0x2f, 0x9f, 0x9f, 0xad, 0x17, 0x23, 0x68, 0xab, 0xc9, 0x03,
0xb6, 0xc5, 0x8d, 0x9b, 0x6b, 0x2c, 0x9e, 0x9f, 0x6d, 0x64, 0x7a, 0xed, 0x16, 0x66, 0x34, 0xf4, 0x2d, 0xd9, 0xb0, 0xd8, 0xf9, 0x1d, 0xd9, 0x16, 0x37, 0x6e, 0xb6, 0xbe, 0x70, 0x7e, 0xb6, 0x3e,
0x45, 0x28, 0x92, 0x97, 0x76, 0xa0, 0x9b, 0xec, 0xee, 0x62, 0x06, 0xcc, 0xe1, 0x02, 0x23, 0x34, 0xdf, 0x6d, 0x35, 0x31, 0xa3, 0xa1, 0x2f, 0x42, 0x81, 0xbc, 0xb0, 0x03, 0xdd, 0x64, 0xb7, 0x1a,
0xd9, 0x55, 0xd5, 0x00, 0xe8, 0x51, 0x2f, 0x90, 0x3d, 0x7f, 0x15, 0x72, 0x63, 0xea, 0xf1, 0xea, 0x33, 0x60, 0x16, 0xe7, 0x19, 0xa1, 0x41, 0x2d, 0xa2, 0xd6, 0x01, 0xba, 0xd4, 0x0b, 0x64, 0xcf,
0xc7, 0xa5, 0x35, 0x39, 0x06, 0x17, 0x1b, 0x15, 0x0b, 0xb0, 0xfa, 0x83, 0x0c, 0xc0, 0xc0, 0xf0, 0x5f, 0x85, 0xec, 0x88, 0x7a, 0xbc, 0x2e, 0x72, 0x69, 0xb5, 0x8e, 0xc1, 0xc5, 0x46, 0xc5, 0x02,
0x0f, 0xa5, 0x92, 0x27, 0x50, 0x8c, 0xea, 0x9b, 0xb2, 0x8c, 0x72, 0xe5, 0x6a, 0x47, 0x60, 0xf4, 0xac, 0x7e, 0x7f, 0x1e, 0xa0, 0x6f, 0xf8, 0x87, 0x52, 0xc9, 0x13, 0x28, 0x44, 0x95, 0x4f, 0x59,
0x38, 0xdc, 0x6c, 0x22, 0xbf, 0x4a, 0x4c, 0x83, 0xc3, 0x8e, 0x92, 0x52, 0x94, 0x8b, 0x49, 0x14, 0x60, 0xb9, 0x72, 0xb5, 0x23, 0x30, 0x7a, 0x1c, 0x6e, 0x36, 0x91, 0x79, 0x25, 0x26, 0xc8, 0x61,
0x0b, 0x05, 0x88, 0xe7, 0xc9, 0x95, 0x67, 0x3f, 0x51, 0x93, 0x5f, 0x0b, 0xc2, 0x68, 0x32, 0x42, 0x47, 0x49, 0xc9, 0xcb, 0xc5, 0xf4, 0x8a, 0x05, 0x09, 0xc4, 0xf3, 0xe4, 0xca, 0xb3, 0x9f, 0xa8,
0x4f, 0x2c, 0x1c, 0xcd, 0xad, 0xc8, 0xd6, 0x02, 0x9e, 0xc9, 0xa1, 0x0f, 0xa1, 0xc4, 0xe6, 0xad, 0xc1, 0xaf, 0x05, 0x61, 0x34, 0x19, 0xbb, 0x27, 0x96, 0x94, 0x66, 0x56, 0x64, 0x6b, 0x0e, 0x4f,
0xfb, 0x9c, 0x27, 0x83, 0xf3, 0x4b, 0x4d, 0x25, 0x34, 0x60, 0x18, 0xcf, 0xac, 0xfc, 0x3a, 0x80, 0xe5, 0xd0, 0x87, 0x50, 0x64, 0xf3, 0xd6, 0x7d, 0xce, 0x93, 0x61, 0xfb, 0xa5, 0xa6, 0x12, 0x1a,
0x31, 0x1e, 0x3b, 0x36, 0xb1, 0xf4, 0xbd, 0x29, 0x8f, 0xc6, 0x8b, 0xb8, 0x28, 0x29, 0x8d, 0x29, 0x30, 0x8c, 0xa6, 0x56, 0x7e, 0x1d, 0xc0, 0x18, 0x8d, 0x1c, 0x9b, 0x58, 0xfa, 0xde, 0x84, 0xc7,
0x3b, 0x2e, 0x21, 0xdb, 0x08, 0x78, 0x84, 0x7d, 0x8d, 0x01, 0x25, 0xba, 0x1e, 0x34, 0x14, 0x58, 0xe9, 0x05, 0x5c, 0x90, 0x94, 0xfa, 0x84, 0x1d, 0x97, 0x90, 0x6d, 0x04, 0x3c, 0xf6, 0xbe, 0xc6,
0xf6, 0x26, 0x2e, 0x33, 0xa8, 0x1c, 0x9d, 0xfa, 0x47, 0x69, 0x78, 0xad, 0x43, 0x82, 0x63, 0xea, 0x80, 0x12, 0x5d, 0x0b, 0xea, 0x0a, 0x2c, 0x79, 0x63, 0x97, 0x19, 0x54, 0x8e, 0x4e, 0xfd, 0x93,
0x1d, 0xd6, 0x83, 0xc0, 0x30, 0x0f, 0x46, 0xc4, 0x95, 0xcb, 0x17, 0x4b, 0x7a, 0x52, 0x17, 0x92, 0x34, 0xbc, 0xd6, 0x26, 0xc1, 0x31, 0xf5, 0x0e, 0x6b, 0x41, 0x60, 0x98, 0x07, 0x43, 0xe2, 0xca,
0x9e, 0x35, 0x58, 0x34, 0x1c, 0xdb, 0xf0, 0x89, 0x08, 0xf0, 0x8a, 0x38, 0x6c, 0xb2, 0xd4, 0x8c, 0xe5, 0x8b, 0xa5, 0x43, 0xa9, 0x0b, 0xe9, 0xd0, 0x2a, 0x2c, 0x18, 0x8e, 0x6d, 0xf8, 0x44, 0x84,
0x25, 0x7a, 0xc4, 0xf7, 0x89, 0xa8, 0xcc, 0xb0, 0x81, 0x87, 0x04, 0xf4, 0x5d, 0xb8, 0x25, 0x43, 0x7e, 0x05, 0x1c, 0x36, 0x59, 0xd2, 0xc6, 0x52, 0x40, 0xe2, 0xfb, 0x44, 0xd4, 0x6c, 0xd8, 0xc0,
0x39, 0x23, 0xea, 0x8a, 0x25, 0x1d, 0x61, 0x89, 0x57, 0x4b, 0xcc, 0x3c, 0x93, 0x07, 0x27, 0x63, 0x43, 0x02, 0xfa, 0x2e, 0xdc, 0x92, 0x41, 0x9e, 0x11, 0x75, 0xc5, 0xd2, 0x91, 0xb0, 0xf8, 0xab,
0xbd, 0x19, 0xb9, 0x3b, 0x0e, 0x64, 0xe4, 0xb8, 0x6a, 0x25, 0xb0, 0x2a, 0x4f, 0xe1, 0xf6, 0xa5, 0x25, 0xe6, 0xa4, 0xc9, 0x83, 0x93, 0x51, 0xe0, 0x94, 0xdc, 0x19, 0x05, 0x32, 0xa6, 0x5c, 0xb1,
0x22, 0x9f, 0xab, 0xf2, 0xf3, 0xf7, 0x69, 0x80, 0x76, 0xaf, 0xbe, 0x23, 0x8d, 0xd4, 0x82, 0xfc, 0x12, 0x58, 0xe5, 0x4d, 0xb8, 0x7d, 0xa9, 0xc8, 0x67, 0xaa, 0x09, 0xfd, 0x43, 0x1a, 0xa0, 0xd5,
0xbe, 0x31, 0xb2, 0x9d, 0xe9, 0x55, 0x1e, 0x70, 0x86, 0xaf, 0xd5, 0x85, 0x39, 0x36, 0xb9, 0x0c, 0xad, 0xed, 0x48, 0x23, 0x35, 0x21, 0xb7, 0x6f, 0x0c, 0x6d, 0x67, 0x72, 0x95, 0x07, 0x9c, 0xe2,
0x96, 0xb2, 0x3c, 0xef, 0x9c, 0xec, 0xb9, 0x24, 0x88, 0xf2, 0x4e, 0xde, 0x62, 0xc3, 0xf0, 0x0c, 0xab, 0x35, 0x61, 0x8e, 0x0d, 0x2e, 0x83, 0xa5, 0x2c, 0xcf, 0x48, 0xc7, 0x7b, 0x2e, 0x09, 0xa2,
0x37, 0xda, 0xba, 0xa2, 0xc1, 0x16, 0x80, 0x85, 0x3c, 0xc7, 0xc6, 0x34, 0x74, 0x5b, 0xb2, 0x89, 0x8c, 0x94, 0xb7, 0xd8, 0x30, 0x3c, 0xc3, 0x8d, 0xb6, 0xae, 0x68, 0xb0, 0x05, 0x60, 0x21, 0xcf,
0xb6, 0x78, 0x7d, 0x95, 0x78, 0x47, 0xc4, 0x5a, 0xcb, 0x71, 0xa3, 0x5e, 0x37, 0x1e, 0x2c, 0xe1, 0xb1, 0x31, 0x09, 0xdd, 0x96, 0x6c, 0xa2, 0x2d, 0x5e, 0x79, 0x25, 0xde, 0x11, 0xb1, 0x56, 0xb3,
0xc2, 0x76, 0x91, 0x74, 0xe5, 0x03, 0x1e, 0x32, 0xcd, 0x58, 0x9f, 0xcb, 0x46, 0x0f, 0x60, 0xe9, 0xdc, 0xa8, 0xd7, 0x8d, 0x07, 0x4b, 0xb8, 0xb0, 0x5d, 0x24, 0x5d, 0xfe, 0x80, 0x87, 0x4c, 0x53,
0xc2, 0x3c, 0x5f, 0x49, 0xf8, 0xdb, 0xbd, 0xe7, 0x5f, 0x55, 0xb2, 0xf2, 0xd7, 0xd7, 0x95, 0xbc, 0xd6, 0x67, 0xb2, 0xd1, 0x03, 0x58, 0xbc, 0x30, 0xcf, 0x97, 0x4a, 0x01, 0xad, 0xee, 0xb3, 0xaf,
0xfa, 0x57, 0x19, 0xe1, 0x68, 0xa4, 0x55, 0x93, 0xdf, 0x15, 0x0a, 0x7c, 0x77, 0x9b, 0xd4, 0x91, 0x2a, 0x19, 0xf9, 0xeb, 0xeb, 0x4a, 0x4e, 0xfd, 0xeb, 0x79, 0xe1, 0x68, 0xa4, 0x55, 0x93, 0x5f,
0x0e, 0xe0, 0xed, 0xab, 0xfd, 0x0f, 0xcb, 0xfb, 0x38, 0x1c, 0x47, 0x82, 0x68, 0x03, 0x4a, 0x62, 0x1c, 0xf2, 0x7c, 0x77, 0x9b, 0xd4, 0x91, 0x0e, 0xe0, 0xed, 0xab, 0xfd, 0x0f, 0xcb, 0x08, 0x39,
0x17, 0xeb, 0xec, 0xc0, 0x71, 0xb3, 0x2e, 0x61, 0x10, 0x24, 0x26, 0x89, 0xee, 0xc2, 0x32, 0x2f, 0x1c, 0x47, 0x82, 0x68, 0x1d, 0x8a, 0x62, 0x17, 0xeb, 0xec, 0xc0, 0x71, 0xb3, 0x2e, 0x62, 0x10,
0x10, 0xf9, 0x07, 0xc4, 0x12, 0x98, 0x2c, 0xc7, 0x2c, 0x45, 0x54, 0x0e, 0xdb, 0x81, 0xb2, 0x24, 0x24, 0x26, 0x89, 0xee, 0xc2, 0x12, 0x2f, 0x1d, 0xf9, 0x07, 0xc4, 0x12, 0x98, 0x0c, 0xc7, 0x2c,
0xe8, 0x3c, 0xe6, 0xcf, 0xf1, 0x01, 0xdd, 0xbb, 0x6e, 0x40, 0x42, 0x84, 0xa7, 0x02, 0xa5, 0xf1, 0x46, 0x54, 0x0e, 0xdb, 0x81, 0x92, 0x24, 0xe8, 0x3c, 0x1b, 0xc8, 0xf2, 0x01, 0xdd, 0xbb, 0x6e,
0xac, 0xa1, 0xfe, 0x3c, 0x14, 0xc2, 0xc1, 0xa2, 0x35, 0xc8, 0x0c, 0x9a, 0x3d, 0x65, 0xa1, 0xb2, 0x40, 0x42, 0x84, 0x27, 0x09, 0xc5, 0xd1, 0xb4, 0xa1, 0xfe, 0x22, 0xe4, 0xc3, 0xc1, 0xa2, 0x55,
0x72, 0x72, 0x5a, 0x2d, 0x85, 0xe4, 0x41, 0xb3, 0xc7, 0x38, 0xbb, 0xad, 0x9e, 0x92, 0xba, 0xc8, 0x98, 0xef, 0x37, 0xba, 0xca, 0x5c, 0x79, 0xf9, 0xe4, 0xb4, 0x52, 0x0c, 0xc9, 0xfd, 0x46, 0x97,
0xd9, 0x6d, 0xf5, 0x50, 0x05, 0xb2, 0xfd, 0xe6, 0xa0, 0x17, 0xc6, 0x67, 0x21, 0x8b, 0xd1, 0x2a, 0x71, 0x76, 0x9b, 0x5d, 0x25, 0x75, 0x91, 0xb3, 0xdb, 0xec, 0xa2, 0x32, 0x64, 0x7a, 0x8d, 0x7e,
0x59, 0x16, 0x9f, 0xa9, 0xfb, 0x50, 0x8a, 0xf5, 0x8e, 0xde, 0x84, 0xc5, 0x76, 0xe7, 0x29, 0xd6, 0x37, 0x8c, 0xcf, 0x42, 0x16, 0xa3, 0x95, 0x33, 0x2c, 0x3e, 0x53, 0xf7, 0xa1, 0x18, 0xeb, 0x1d,
0xfa, 0x7d, 0x65, 0x41, 0xa4, 0x07, 0x31, 0x6e, 0xdb, 0x1d, 0xb2, 0xb5, 0x43, 0xaf, 0x43, 0x76, 0xbd, 0x09, 0x0b, 0xad, 0xf6, 0x26, 0xd6, 0x7a, 0x3d, 0x65, 0x4e, 0xa4, 0x07, 0x31, 0x6e, 0xcb,
0xab, 0xcb, 0xee, 0x7d, 0x91, 0x7f, 0xc4, 0x10, 0x5b, 0xd4, 0x0f, 0x2a, 0x37, 0x65, 0xe0, 0x17, 0x1d, 0xb0, 0xb5, 0x43, 0xaf, 0x43, 0x66, 0xab, 0xc3, 0xee, 0x7d, 0x91, 0x7f, 0xc4, 0x10, 0x5b,
0x57, 0xac, 0xfe, 0x4e, 0x0a, 0xf2, 0xe2, 0xa0, 0x25, 0x2e, 0x62, 0x1d, 0x16, 0xc3, 0x32, 0x83, 0xd4, 0x0f, 0xca, 0x37, 0x65, 0xe0, 0x17, 0x57, 0xac, 0xfe, 0x7e, 0x0a, 0x72, 0xe2, 0xa0, 0x25,
0x48, 0x0e, 0xdf, 0xbe, 0x3c, 0x91, 0xab, 0xc9, 0xbc, 0x4b, 0x6c, 0xcd, 0x50, 0xae, 0xf2, 0x3e, 0x2e, 0x62, 0x6d, 0x9a, 0x14, 0x89, 0xb4, 0xf1, 0xed, 0xcb, 0x53, 0xbc, 0xaa, 0xcc, 0xc8, 0xc4,
0x94, 0xe3, 0x8c, 0xcf, 0xb5, 0x31, 0xbf, 0x0b, 0x25, 0xb6, 0xf7, 0xc3, 0x84, 0xee, 0x11, 0xe4, 0xd6, 0x0c, 0xe5, 0xca, 0xef, 0x43, 0x29, 0xce, 0xf8, 0x4c, 0x1b, 0xf3, 0xbb, 0x50, 0x64, 0x7b,
0x85, 0xb3, 0x88, 0xee, 0xa1, 0xcb, 0xb3, 0x4a, 0x89, 0x44, 0x4f, 0x60, 0x51, 0x64, 0xa2, 0x61, 0x3f, 0x4c, 0xf5, 0x1e, 0x41, 0x4e, 0x38, 0x8b, 0xe8, 0x1e, 0xba, 0x3c, 0xdf, 0x94, 0x48, 0xf4,
0xed, 0x79, 0xfd, 0xea, 0x13, 0x86, 0x43, 0xb8, 0xfa, 0x21, 0x64, 0x7b, 0x84, 0x78, 0xcc, 0xf6, 0x04, 0x16, 0x44, 0x8e, 0x1a, 0x56, 0xa5, 0xd7, 0xae, 0x3e, 0x61, 0x38, 0x84, 0xab, 0x1f, 0x42,
0x2e, 0xb5, 0xc8, 0xec, 0xea, 0x96, 0x49, 0xb4, 0x45, 0xda, 0x2d, 0x96, 0x44, 0x5b, 0xa4, 0x6d, 0xa6, 0x4b, 0x88, 0xc7, 0x6c, 0xef, 0x52, 0x8b, 0x4c, 0xaf, 0x6e, 0x99, 0x5e, 0x5b, 0xa4, 0xd5,
0x45, 0xf5, 0xb3, 0x74, 0xac, 0x7e, 0x36, 0x80, 0xf2, 0x0b, 0x62, 0x0f, 0x0f, 0x02, 0x62, 0x71, 0x64, 0xe9, 0xb5, 0x45, 0x5a, 0x56, 0x54, 0x59, 0x4b, 0xc7, 0x2a, 0x6b, 0x7d, 0x28, 0x3d, 0x27,
0x45, 0xef, 0x42, 0x76, 0x4c, 0xa2, 0xc1, 0xaf, 0x25, 0x6e, 0x3e, 0x42, 0x3c, 0xcc, 0x51, 0xcc, 0xf6, 0xe0, 0x20, 0x20, 0x16, 0x57, 0xf4, 0x2e, 0x64, 0x46, 0x24, 0x1a, 0xfc, 0x6a, 0xe2, 0xe6,
0xc7, 0x1c, 0x73, 0x69, 0xf9, 0x60, 0x22, 0x5b, 0xea, 0xdf, 0xa5, 0x61, 0xb9, 0xed, 0xfb, 0x13, 0x23, 0xc4, 0xc3, 0x1c, 0xc5, 0x7c, 0xcc, 0x31, 0x97, 0x96, 0x4f, 0x29, 0xb2, 0xa5, 0xfe, 0x7d,
0xc3, 0x35, 0xc3, 0xa8, 0xee, 0x9b, 0x17, 0xa3, 0xba, 0xc4, 0x97, 0xa5, 0x8b, 0x22, 0x17, 0xcb, 0x1a, 0x96, 0x5a, 0xbe, 0x3f, 0x36, 0x5c, 0x33, 0x8c, 0xea, 0xbe, 0x79, 0x31, 0xaa, 0x4b, 0x7c,
0x82, 0xf2, 0x66, 0x4d, 0x47, 0x37, 0xab, 0xfa, 0x6f, 0xa9, 0xb0, 0xf6, 0x77, 0x37, 0xe6, 0x0a, 0x73, 0xba, 0x28, 0x72, 0xb1, 0x60, 0x28, 0x6f, 0xd6, 0x74, 0x74, 0xb3, 0xaa, 0xff, 0x91, 0x0a,
0x44, 0x8e, 0x18, 0xd7, 0x44, 0x76, 0xdd, 0x43, 0x97, 0x1e, 0xbb, 0x2c, 0x7b, 0xc5, 0x5a, 0x47, 0xab, 0x82, 0x77, 0x63, 0xae, 0x40, 0xe4, 0x88, 0x71, 0x4d, 0x64, 0xd7, 0x3d, 0x74, 0xe9, 0xb1,
0x7b, 0xa1, 0xa4, 0xc4, 0xf6, 0xbc, 0x00, 0xc2, 0xc4, 0x25, 0xc7, 0x4c, 0x53, 0x4f, 0xeb, 0xb4, 0xcb, 0xb2, 0x57, 0xac, 0xb5, 0xb5, 0xe7, 0x4a, 0x4a, 0x6c, 0xcf, 0x0b, 0x20, 0x4c, 0x5c, 0x72,
0x58, 0x14, 0x96, 0x4e, 0xd0, 0xd4, 0x23, 0xae, 0x65, 0xbb, 0x43, 0xf4, 0x26, 0xe4, 0xdb, 0xfd, 0xcc, 0x34, 0x75, 0xb5, 0x76, 0x93, 0x45, 0x61, 0xe9, 0x04, 0x4d, 0x5d, 0xe2, 0x5a, 0xb6, 0x3b,
0xfe, 0x2e, 0x4f, 0x21, 0x5f, 0x3b, 0x39, 0xad, 0xde, 0xbc, 0x80, 0xe2, 0x75, 0x5f, 0x8b, 0x81, 0x40, 0x6f, 0x42, 0xae, 0xd5, 0xeb, 0xed, 0xf2, 0x14, 0xf2, 0xb5, 0x93, 0xd3, 0xca, 0xcd, 0x0b,
0x58, 0x0a, 0xc4, 0xe2, 0xb3, 0x04, 0x10, 0x8b, 0xad, 0x05, 0x08, 0x77, 0x07, 0xf5, 0x81, 0xa6, 0x28, 0x5e, 0x11, 0xb6, 0x18, 0x88, 0xa5, 0x40, 0x2c, 0x3e, 0x4b, 0x00, 0xb1, 0xd8, 0x5a, 0x80,
0xe4, 0x12, 0x40, 0x98, 0xb2, 0xbf, 0xf2, 0xb8, 0xfd, 0x53, 0x1a, 0x94, 0xba, 0x69, 0x92, 0x71, 0x70, 0xa7, 0x5f, 0xeb, 0x6b, 0x4a, 0x36, 0x01, 0x84, 0x29, 0xfb, 0x2b, 0x8f, 0xdb, 0xbf, 0xa4,
0xc0, 0xf8, 0x32, 0xeb, 0x1c, 0x40, 0x61, 0xcc, 0x7e, 0xd9, 0x24, 0x8c, 0xa0, 0x9e, 0x24, 0xbe, 0x41, 0xa9, 0x99, 0x26, 0x19, 0x05, 0x8c, 0x2f, 0xb3, 0xce, 0x3e, 0xe4, 0x47, 0xec, 0x97, 0x4d,
0x8d, 0xce, 0xc9, 0xd5, 0x30, 0x75, 0x48, 0xdd, 0x1a, 0xd9, 0xbe, 0x6f, 0x53, 0x57, 0xd0, 0x70, 0xc2, 0x08, 0xea, 0x49, 0xe2, 0xab, 0xe9, 0x8c, 0x5c, 0x15, 0x53, 0x87, 0xd4, 0xac, 0xa1, 0xed,
0xa4, 0xa9, 0xf2, 0x1f, 0x29, 0xb8, 0x99, 0x80, 0x40, 0x0f, 0x20, 0xeb, 0x51, 0x27, 0x5c, 0xc3, 0xfb, 0x36, 0x75, 0x05, 0x0d, 0x47, 0x9a, 0xca, 0xff, 0x95, 0x82, 0x9b, 0x09, 0x08, 0xf4, 0x00,
0x3b, 0x97, 0x95, 0x75, 0x99, 0x28, 0xe6, 0x48, 0xb4, 0x0e, 0x60, 0x4c, 0x02, 0x6a, 0xf0, 0xfe, 0x32, 0x1e, 0x75, 0xc2, 0x35, 0xbc, 0x73, 0x59, 0xc1, 0x97, 0x89, 0x62, 0x8e, 0x44, 0x6b, 0x00,
0xf9, 0xea, 0x15, 0x70, 0x8c, 0x82, 0x5e, 0x40, 0xde, 0x27, 0xa6, 0x47, 0xc2, 0x38, 0xfb, 0xc3, 0xc6, 0x38, 0xa0, 0x06, 0xef, 0x9f, 0xaf, 0x5e, 0x1e, 0xc7, 0x28, 0xe8, 0x39, 0xe4, 0x7c, 0x62,
0xff, 0xed, 0xe8, 0x6b, 0x7d, 0xae, 0x06, 0x4b, 0x75, 0x95, 0x1a, 0xe4, 0x05, 0x85, 0x6d, 0x7b, 0x7a, 0x24, 0x8c, 0xb3, 0x3f, 0xfc, 0xff, 0x8e, 0xbe, 0xda, 0xe3, 0x6a, 0xb0, 0x54, 0x57, 0xae,
0xcb, 0x08, 0x0c, 0x59, 0xf4, 0xe7, 0xbf, 0xd9, 0x6e, 0x32, 0x9c, 0x61, 0xb8, 0x9b, 0x0c, 0x67, 0x42, 0x4e, 0x50, 0xd8, 0xb6, 0xb7, 0x8c, 0xc0, 0x90, 0xcf, 0x01, 0xfc, 0x37, 0xdb, 0x4d, 0x86,
0xa8, 0xfe, 0x65, 0x1a, 0x40, 0x7b, 0x19, 0x10, 0xcf, 0x35, 0x9c, 0x66, 0x1d, 0x69, 0xb1, 0x9b, 0x33, 0x08, 0x77, 0x93, 0xe1, 0x0c, 0xd4, 0xbf, 0x4a, 0x03, 0x68, 0x2f, 0x02, 0xe2, 0xb9, 0x86,
0x41, 0xcc, 0xf6, 0xcb, 0x89, 0xef, 0x1c, 0x91, 0x44, 0xad, 0x59, 0x4f, 0xb8, 0x1b, 0x6e, 0x43, 0xd3, 0xa8, 0x21, 0x2d, 0x76, 0x33, 0x88, 0xd9, 0x7e, 0x39, 0xf1, 0x05, 0x24, 0x92, 0xa8, 0x36,
0x66, 0xe2, 0xc9, 0xe7, 0x6e, 0x11, 0x23, 0xef, 0xe2, 0x6d, 0xcc, 0x68, 0x48, 0x9b, 0xb9, 0xad, 0x6a, 0x09, 0x77, 0xc3, 0x6d, 0x98, 0x1f, 0x7b, 0xf2, 0x21, 0x5c, 0xc4, 0xc8, 0xbb, 0x78, 0x1b,
0xcc, 0xe5, 0x8f, 0xda, 0xb1, 0x0e, 0x12, 0x5d, 0x17, 0x3b, 0xf9, 0xa6, 0xa1, 0x9b, 0x44, 0xde, 0x33, 0x1a, 0xd2, 0xe2, 0xb5, 0x9c, 0x4b, 0x9f, 0xbb, 0x63, 0x1d, 0x24, 0xba, 0x2e, 0x76, 0xf2,
0x2a, 0x65, 0x71, 0xf2, 0x9b, 0xf5, 0x26, 0xf1, 0x02, 0x9c, 0x37, 0x0d, 0xf6, 0xff, 0xa7, 0xf2, 0x4d, 0x43, 0x37, 0x89, 0xbc, 0x55, 0x4a, 0xe2, 0xe4, 0x37, 0x6a, 0x0d, 0xe2, 0x05, 0x38, 0x67,
0x6f, 0xef, 0x02, 0xcc, 0xa6, 0x86, 0xd6, 0x21, 0xd7, 0xdc, 0xec, 0xf7, 0xb7, 0x95, 0x05, 0xe1, 0x1a, 0xec, 0xff, 0xe7, 0xf2, 0x6f, 0xef, 0x02, 0x4c, 0xa7, 0x86, 0xd6, 0x20, 0xdb, 0xd8, 0xe8,
0xc0, 0x67, 0x2c, 0x4e, 0x56, 0xff, 0x2c, 0x0d, 0x85, 0x66, 0x5d, 0x5e, 0xb9, 0x4d, 0x50, 0xb8, 0xf5, 0xb6, 0x95, 0x39, 0xe1, 0xc0, 0xa7, 0x2c, 0x4e, 0x56, 0xff, 0x3c, 0x0d, 0xf9, 0x46, 0x4d,
0x57, 0xe2, 0x4f, 0x25, 0xe4, 0xe5, 0xd8, 0xf6, 0xa6, 0xd2, 0xb1, 0x5c, 0x91, 0xf0, 0x2e, 0x33, 0x5e, 0xb9, 0x0d, 0x50, 0xb8, 0x57, 0xe2, 0x8f, 0x28, 0xe4, 0xc5, 0xc8, 0xf6, 0x26, 0xd2, 0xb1,
0x11, 0x36, 0x6a, 0x8d, 0x0b, 0x20, 0x0c, 0x65, 0x22, 0x8d, 0xa0, 0x9b, 0x46, 0xe8, 0xe3, 0xd7, 0x5c, 0x91, 0xf0, 0x2e, 0x31, 0x11, 0x36, 0x6a, 0x8d, 0x0b, 0x20, 0x0c, 0x25, 0x22, 0x8d, 0xa0,
0xaf, 0x36, 0x96, 0x48, 0x5d, 0x66, 0x6d, 0x1f, 0x97, 0x42, 0x25, 0x4d, 0xc3, 0x47, 0xef, 0xc1, 0x9b, 0x46, 0xe8, 0xe3, 0xd7, 0xae, 0x36, 0x96, 0x48, 0x5d, 0xa6, 0x6d, 0x1f, 0x17, 0x43, 0x25,
0x8a, 0x6f, 0x0f, 0x5d, 0xdb, 0x1d, 0xea, 0xa1, 0xf1, 0xf8, 0xbb, 0x4d, 0xe3, 0xc6, 0xf9, 0xd9, 0x0d, 0xc3, 0x47, 0xef, 0xc1, 0xb2, 0x6f, 0x0f, 0x5c, 0xdb, 0x1d, 0xe8, 0xa1, 0xf1, 0xf8, 0x8b,
0xc6, 0x52, 0x5f, 0xb0, 0xa4, 0x0d, 0x97, 0x24, 0xb2, 0xc9, 0x4d, 0x89, 0xbe, 0x0e, 0xcb, 0x31, 0x4e, 0xfd, 0xc6, 0xf9, 0xd9, 0xfa, 0x62, 0x4f, 0xb0, 0xa4, 0x0d, 0x17, 0x25, 0xb2, 0xc1, 0x4d,
0x51, 0x66, 0x45, 0x61, 0x76, 0xe5, 0xfc, 0x6c, 0xa3, 0x1c, 0x49, 0x3e, 0x23, 0x53, 0x5c, 0x8e, 0x89, 0xbe, 0x0e, 0x4b, 0x31, 0x51, 0x66, 0x45, 0x61, 0x76, 0xe5, 0xfc, 0x6c, 0xbd, 0x14, 0x49,
0x04, 0x9f, 0x11, 0x5e, 0x9b, 0xd9, 0xa7, 0x9e, 0x49, 0x74, 0x8f, 0x9f, 0x69, 0x7e, 0xbb, 0x67, 0x3e, 0x25, 0x13, 0x5c, 0x8a, 0x04, 0x9f, 0x12, 0x5e, 0x9b, 0xd9, 0xa7, 0x9e, 0x49, 0x74, 0x8f,
0x71, 0x89, 0xd3, 0xc4, 0x31, 0x57, 0x9f, 0xc3, 0xcd, 0xae, 0x67, 0x1e, 0x10, 0x3f, 0x10, 0xa6, 0x9f, 0x69, 0x7e, 0xbb, 0x67, 0x70, 0x91, 0xd3, 0xc4, 0x31, 0x57, 0x9f, 0xc1, 0xcd, 0x8e, 0x67,
0x90, 0x56, 0xfc, 0x10, 0xee, 0x04, 0x86, 0x7f, 0xa8, 0x1f, 0xd8, 0x7e, 0x40, 0xbd, 0xa9, 0xee, 0x1e, 0x10, 0x3f, 0x10, 0xa6, 0x90, 0x56, 0xfc, 0x10, 0xee, 0x04, 0x86, 0x7f, 0xa8, 0x1f, 0xd8,
0x91, 0x80, 0xb8, 0x8c, 0xaf, 0xf3, 0xa7, 0x60, 0x59, 0x34, 0xbc, 0xcd, 0x30, 0x5b, 0x02, 0x82, 0x7e, 0x40, 0xbd, 0x89, 0xee, 0x91, 0x80, 0xb8, 0x8c, 0xaf, 0xf3, 0x47, 0x62, 0x59, 0x4e, 0xbc,
0x43, 0xc4, 0x36, 0x03, 0xa8, 0x6d, 0x28, 0xb3, 0x14, 0x46, 0x16, 0xd5, 0xd8, 0xec, 0xc1, 0xa1, 0xcd, 0x30, 0x5b, 0x02, 0x82, 0x43, 0xc4, 0x36, 0x03, 0xa8, 0x2d, 0x28, 0xb1, 0x14, 0x46, 0x16,
0x43, 0xfd, 0x33, 0x5f, 0x53, 0x45, 0x87, 0x0e, 0xc5, 0x4f, 0xf5, 0xdb, 0xa0, 0xb4, 0x6c, 0x7f, 0xd5, 0xd8, 0xec, 0xc1, 0xa1, 0x03, 0xfd, 0x95, 0xaf, 0xa9, 0x82, 0x43, 0x07, 0xe2, 0xa7, 0xfa,
0x6c, 0x04, 0xe6, 0x41, 0x58, 0x0d, 0x45, 0x2d, 0x50, 0x0e, 0x88, 0xe1, 0x05, 0x7b, 0xc4, 0x08, 0x6d, 0x50, 0x9a, 0xb6, 0x3f, 0x32, 0x02, 0xf3, 0x20, 0xac, 0x93, 0xa2, 0x26, 0x28, 0x07, 0xc4,
0xf4, 0x31, 0xf1, 0x6c, 0x6a, 0x5d, 0xbf, 0xca, 0x2b, 0x91, 0x48, 0x8f, 0x4b, 0xa8, 0xff, 0x95, 0xf0, 0x82, 0x3d, 0x62, 0x04, 0xfa, 0x88, 0x78, 0x36, 0xb5, 0xae, 0x5f, 0xe5, 0xe5, 0x48, 0xa4,
0x02, 0xc0, 0xc6, 0x7e, 0x18, 0xad, 0x7d, 0x05, 0x6e, 0xf8, 0xae, 0x31, 0xf6, 0x0f, 0x68, 0xa0, 0xcb, 0x25, 0xd4, 0xff, 0x49, 0x01, 0x60, 0x63, 0x3f, 0x8c, 0xd6, 0xbe, 0x02, 0x37, 0x7c, 0xd7,
0xdb, 0x6e, 0x40, 0xbc, 0x23, 0xc3, 0x91, 0xc5, 0x1d, 0x25, 0x64, 0xb4, 0x25, 0x1d, 0xbd, 0x0b, 0x18, 0xf9, 0x07, 0x34, 0xd0, 0x6d, 0x37, 0x20, 0xde, 0x91, 0xe1, 0xc8, 0xe2, 0x8e, 0x12, 0x32,
0xe8, 0x90, 0x90, 0xb1, 0x4e, 0x1d, 0x4b, 0x0f, 0x99, 0xe2, 0xa1, 0x3a, 0x8b, 0x15, 0xc6, 0xe9, 0x5a, 0x92, 0x8e, 0xde, 0x05, 0x74, 0x48, 0xc8, 0x48, 0xa7, 0x8e, 0xa5, 0x87, 0x4c, 0xf1, 0x84,
0x3a, 0x56, 0x3f, 0xa4, 0xa3, 0x06, 0xac, 0xb3, 0xe9, 0x13, 0x37, 0xf0, 0x6c, 0xe2, 0xeb, 0xfb, 0x9d, 0xc1, 0x0a, 0xe3, 0x74, 0x1c, 0xab, 0x17, 0xd2, 0x51, 0x1d, 0xd6, 0xd8, 0xf4, 0x89, 0x1b,
0xd4, 0xd3, 0x7d, 0x87, 0x1e, 0xeb, 0xfb, 0xd4, 0x71, 0xe8, 0x31, 0xf1, 0xc2, 0xba, 0x59, 0xc5, 0x78, 0x36, 0xf1, 0xf5, 0x7d, 0xea, 0xe9, 0xbe, 0x43, 0x8f, 0xf5, 0x7d, 0xea, 0x38, 0xf4, 0x98,
0xa1, 0x43, 0x4d, 0x80, 0x36, 0xa9, 0xd7, 0x77, 0xe8, 0xf1, 0x66, 0x88, 0x60, 0x21, 0xdd, 0x6c, 0x78, 0x61, 0xdd, 0xac, 0xec, 0xd0, 0x81, 0x26, 0x40, 0x1b, 0xd4, 0xeb, 0x39, 0xf4, 0x78, 0x23,
0xce, 0x81, 0x6d, 0x1e, 0x86, 0x21, 0x5d, 0x44, 0x1d, 0xd8, 0xe6, 0x21, 0x7a, 0x13, 0x96, 0x88, 0x44, 0xb0, 0x90, 0x6e, 0x3a, 0xe7, 0xc0, 0x36, 0x0f, 0xc3, 0x90, 0x2e, 0xa2, 0xf6, 0x6d, 0xf3,
0x43, 0x78, 0xf9, 0x44, 0xa0, 0x72, 0x1c, 0x55, 0x0e, 0x89, 0x0c, 0xa4, 0x7e, 0x04, 0x8a, 0xe6, 0x10, 0xbd, 0x09, 0x8b, 0xc4, 0x21, 0xbc, 0x7c, 0x22, 0x50, 0x59, 0x8e, 0x2a, 0x85, 0x44, 0x06,
0x9a, 0xde, 0x74, 0x1c, 0x5b, 0xf3, 0x77, 0x01, 0x31, 0x27, 0xa9, 0x3b, 0xd4, 0x3c, 0xd4, 0x47, 0x52, 0x3f, 0x02, 0x45, 0x73, 0x4d, 0x6f, 0x32, 0x8a, 0xad, 0xf9, 0xbb, 0x80, 0x98, 0x93, 0xd4,
0x86, 0x6b, 0x0c, 0xd9, 0xb8, 0xc4, 0x0b, 0xa1, 0xc2, 0x38, 0xdb, 0xd4, 0x3c, 0xdc, 0x91, 0x74, 0x1d, 0x6a, 0x1e, 0xea, 0x43, 0xc3, 0x35, 0x06, 0x6c, 0x5c, 0xe2, 0xed, 0x50, 0x61, 0x9c, 0x6d,
0xf5, 0x3d, 0x80, 0xfe, 0xd8, 0x23, 0x86, 0xd5, 0x65, 0xd1, 0x04, 0x33, 0x1d, 0x6f, 0xe9, 0x96, 0x6a, 0x1e, 0xee, 0x48, 0xba, 0xfa, 0x1e, 0x40, 0x6f, 0xe4, 0x11, 0xc3, 0xea, 0xb0, 0x68, 0x82,
0x7c, 0x7f, 0xa5, 0x9e, 0x3c, 0xea, 0x8a, 0x60, 0xb4, 0x22, 0xba, 0xfa, 0xff, 0xe1, 0x66, 0xcf, 0x99, 0x8e, 0xb7, 0x74, 0x4b, 0xbe, 0xcc, 0x52, 0x4f, 0x1e, 0x75, 0x45, 0x30, 0x9a, 0x11, 0x5d,
0x31, 0x4c, 0xfe, 0x2d, 0x42, 0x2f, 0x7a, 0xf2, 0x42, 0x4f, 0x20, 0x2f, 0xa0, 0x72, 0x25, 0x13, 0xfd, 0x79, 0xb8, 0xd9, 0x75, 0x0c, 0x93, 0x7f, 0xa5, 0xd0, 0x8d, 0x1e, 0xc3, 0xd0, 0x13, 0xc8,
0x8f, 0xdb, 0xac, 0xcf, 0xad, 0x05, 0x2c, 0xf1, 0x8d, 0x32, 0xc0, 0x4c, 0x8f, 0xfa, 0x27, 0x29, 0x09, 0xa8, 0x5c, 0xc9, 0xc4, 0xe3, 0x36, 0xed, 0x73, 0x6b, 0x0e, 0x4b, 0x7c, 0xbd, 0x04, 0x30,
0x28, 0x46, 0xfa, 0x51, 0x55, 0xbc, 0xe4, 0x04, 0x9e, 0x61, 0xbb, 0x32, 0xe3, 0x2f, 0xe2, 0x38, 0xd5, 0xa3, 0xfe, 0x53, 0x0a, 0x0a, 0x91, 0x7e, 0x54, 0x11, 0x6f, 0x3c, 0x81, 0x67, 0xd8, 0xae,
0x09, 0xb5, 0xa1, 0x34, 0x8e, 0xa4, 0xaf, 0x8c, 0xe7, 0x12, 0x46, 0x8d, 0xe3, 0xb2, 0xe8, 0x7d, 0xcc, 0xf8, 0x0b, 0x38, 0x4e, 0x42, 0x2d, 0x28, 0x8e, 0x22, 0xe9, 0x2b, 0xe3, 0xb9, 0x84, 0x51,
0x28, 0x86, 0x0f, 0xde, 0xa1, 0x87, 0xbd, 0xfa, 0x7d, 0x7c, 0x06, 0x57, 0xbf, 0x09, 0xf0, 0x2d, 0xe3, 0xb8, 0x2c, 0x7a, 0x1f, 0x0a, 0xe1, 0x53, 0x78, 0xe8, 0x61, 0xaf, 0x7e, 0x39, 0x9f, 0xc2,
0x6a, 0xbb, 0x03, 0x7a, 0x48, 0x5c, 0xfe, 0x44, 0xcb, 0xf2, 0x45, 0x12, 0x5a, 0x51, 0xb6, 0x78, 0xc3, 0x42, 0xaa, 0x47, 0x46, 0x8e, 0xcd, 0x7c, 0x4e, 0x26, 0x2a, 0xa4, 0x62, 0x49, 0x52, 0xbf,
0x19, 0x40, 0x2c, 0x41, 0xf4, 0x52, 0x29, 0x9a, 0xea, 0x5f, 0xa4, 0x21, 0x8f, 0x29, 0x0d, 0x9a, 0x09, 0xf0, 0x2d, 0x6a, 0xbb, 0x7d, 0x7a, 0x48, 0x5c, 0xfe, 0xbe, 0xcb, 0x52, 0x4a, 0x12, 0x1a,
0x75, 0x54, 0x85, 0xbc, 0xf4, 0x13, 0xfc, 0xfe, 0x69, 0x14, 0xcf, 0xcf, 0x36, 0x72, 0xc2, 0x41, 0x5a, 0xb6, 0x78, 0xa5, 0x40, 0xac, 0x52, 0xf4, 0xcc, 0x29, 0x9a, 0xea, 0x5f, 0xa6, 0x21, 0x87,
0xe4, 0x4c, 0xee, 0x19, 0x62, 0x1e, 0x3c, 0x7d, 0x99, 0x07, 0x47, 0x0f, 0xa0, 0x2c, 0x41, 0xfa, 0x29, 0x0d, 0x1a, 0x35, 0x54, 0x81, 0x9c, 0x74, 0x25, 0xfc, 0x8a, 0xaa, 0x17, 0xce, 0xcf, 0xd6,
0x81, 0xe1, 0x1f, 0x88, 0xe4, 0xad, 0xb1, 0x7c, 0x7e, 0xb6, 0x01, 0x02, 0xb9, 0x65, 0xf8, 0x07, 0xb3, 0xc2, 0x87, 0x64, 0x4d, 0xee, 0x3c, 0x62, 0x4e, 0x3e, 0x7d, 0x99, 0x93, 0x47, 0x0f, 0xa0,
0x18, 0x04, 0x9a, 0xfd, 0x46, 0x1a, 0x94, 0x3e, 0xa6, 0xb6, 0xab, 0x07, 0x7c, 0x12, 0xb2, 0xd0, 0x24, 0x41, 0xfa, 0x81, 0xe1, 0x1f, 0x88, 0xfc, 0xae, 0xbe, 0x74, 0x7e, 0xb6, 0x0e, 0x02, 0xb9,
0x98, 0xb8, 0x8e, 0xb3, 0xa9, 0xca, 0xaf, 0x19, 0xe0, 0xe3, 0xd9, 0xe4, 0x35, 0x58, 0xf2, 0x28, 0x65, 0xf8, 0x07, 0x18, 0x04, 0x9a, 0xfd, 0x46, 0x1a, 0x14, 0x3f, 0xa6, 0xb6, 0xab, 0x07, 0x7c,
0x0d, 0x84, 0xdb, 0xb2, 0xa9, 0x2b, 0x6b, 0x18, 0xd5, 0xc4, 0xd2, 0x36, 0xa5, 0x01, 0x96, 0x38, 0x12, 0xb2, 0x16, 0x99, 0xb8, 0xd4, 0xd3, 0xa9, 0xca, 0x4f, 0x21, 0xe0, 0xe3, 0xe9, 0xe4, 0x35,
0x5c, 0xf6, 0x62, 0x2d, 0xf4, 0x00, 0x56, 0x1d, 0xc3, 0x0f, 0x74, 0xee, 0xef, 0xac, 0x99, 0xb6, 0x58, 0xf4, 0x28, 0x0d, 0x84, 0x67, 0xb3, 0xa9, 0x2b, 0xcb, 0x1c, 0x95, 0xc4, 0xea, 0x37, 0xa5,
0x3c, 0x3f, 0x6a, 0x88, 0xf1, 0x36, 0x39, 0x2b, 0x94, 0x50, 0xff, 0x21, 0x05, 0x25, 0x36, 0x19, 0x01, 0x96, 0x38, 0x5c, 0xf2, 0x62, 0x2d, 0xf4, 0x00, 0x56, 0x1c, 0xc3, 0x0f, 0x74, 0xee, 0x12,
0x7b, 0xdf, 0x36, 0x59, 0x90, 0xf7, 0xf9, 0x63, 0x8f, 0xdb, 0x90, 0x31, 0x7d, 0x4f, 0x1a, 0x95, 0xad, 0xa9, 0xb6, 0x1c, 0x37, 0x3e, 0x62, 0xbc, 0x0d, 0xce, 0x0a, 0x25, 0xd4, 0x7f, 0x4c, 0x41,
0x5f, 0xbe, 0xcd, 0x3e, 0xc6, 0x8c, 0x86, 0x3e, 0x82, 0xbc, 0xac, 0xa5, 0x88, 0xb0, 0x43, 0xbd, 0x91, 0x4d, 0xc6, 0xde, 0xb7, 0x4d, 0x16, 0x07, 0x7e, 0xf6, 0xf0, 0xe4, 0x36, 0xcc, 0x9b, 0xbe,
0x3e, 0x1c, 0x95, 0xb6, 0x91, 0x72, 0x7c, 0x2f, 0xcf, 0x46, 0x27, 0x2e, 0x01, 0x1c, 0x27, 0xa1, 0x27, 0x8d, 0xca, 0xef, 0xe7, 0x46, 0x0f, 0x63, 0x46, 0x43, 0x1f, 0x41, 0x4e, 0x96, 0x5b, 0x44,
0x5b, 0x90, 0x36, 0x85, 0xb9, 0xe4, 0xe7, 0x32, 0xcd, 0x0e, 0x4e, 0x9b, 0xae, 0xfa, 0xa3, 0x14, 0x64, 0xa2, 0x5e, 0x1f, 0xb1, 0x4a, 0xdb, 0x48, 0x39, 0xbe, 0xdd, 0xa7, 0xa3, 0x13, 0xf7, 0x04,
0x2c, 0xcd, 0x0e, 0x3c, 0xdb, 0x01, 0x77, 0xa0, 0xe8, 0x4f, 0xf6, 0xfc, 0xa9, 0x1f, 0x90, 0x51, 0x8e, 0x93, 0xd0, 0x2d, 0x48, 0x9b, 0xc2, 0x5c, 0xf2, 0x5b, 0x9b, 0x46, 0x1b, 0xa7, 0x4d, 0x57,
0xf8, 0xfc, 0x1c, 0x11, 0x50, 0x1b, 0x8a, 0x86, 0x33, 0xa4, 0x9e, 0x1d, 0x1c, 0x8c, 0x64, 0x96, 0xfd, 0x51, 0x0a, 0x16, 0xa7, 0x3e, 0x81, 0xed, 0x80, 0x3b, 0x50, 0xf0, 0xc7, 0x7b, 0xfe, 0xc4,
0x9a, 0x1c, 0x2a, 0xc4, 0x75, 0xd6, 0xea, 0xa1, 0x08, 0x9e, 0x49, 0x87, 0xf7, 0xbe, 0xf8, 0x46, 0x0f, 0xc8, 0x30, 0x7c, 0xbb, 0x8e, 0x08, 0xa8, 0x05, 0x05, 0xc3, 0x19, 0x50, 0xcf, 0x0e, 0x0e,
0x81, 0xdf, 0xfb, 0x6f, 0x40, 0xd9, 0x31, 0x46, 0xbc, 0xb8, 0x14, 0xd8, 0x23, 0x31, 0x8f, 0x2c, 0x86, 0x32, 0x91, 0x4d, 0x8e, 0x26, 0xe2, 0x3a, 0xab, 0xb5, 0x50, 0x04, 0x4f, 0xa5, 0xc3, 0xd0,
0x2e, 0x49, 0xda, 0xc0, 0x1e, 0x11, 0x55, 0x85, 0x62, 0xa4, 0x0c, 0xad, 0x40, 0xa9, 0xae, 0xf5, 0x40, 0x7c, 0xe0, 0xc0, 0x43, 0x83, 0x37, 0xa0, 0xe4, 0x18, 0x43, 0x5e, 0x7f, 0x0a, 0xec, 0x21,
0xf5, 0x87, 0x8f, 0x9e, 0xe8, 0x4f, 0x9b, 0x3b, 0xca, 0x82, 0x8c, 0x4d, 0xff, 0x34, 0x05, 0x4b, 0x09, 0x0f, 0x83, 0xa4, 0xf5, 0xed, 0x21, 0x51, 0x55, 0x28, 0x44, 0xca, 0xd0, 0x32, 0x14, 0x6b,
0xd2, 0x1d, 0xc9, 0x78, 0xff, 0x4d, 0x58, 0xf4, 0x8c, 0xfd, 0x20, 0xcc, 0x48, 0xb2, 0x62, 0x57, 0x5a, 0x4f, 0x7f, 0xf8, 0xe8, 0x89, 0xbe, 0xd9, 0xd8, 0x51, 0xe6, 0x64, 0xf8, 0xfa, 0x67, 0x29,
0x33, 0x0f, 0xcf, 0x32, 0x12, 0xc6, 0x4a, 0xce, 0x48, 0x62, 0x1f, 0x44, 0x64, 0xae, 0xfc, 0x20, 0x58, 0x94, 0x1e, 0x4b, 0xa6, 0x04, 0x6f, 0xc2, 0x82, 0x67, 0xec, 0x07, 0x61, 0xd2, 0x92, 0x11,
0x22, 0xfb, 0x33, 0xf9, 0x20, 0x42, 0xfd, 0x15, 0x80, 0x4d, 0xdb, 0x21, 0x03, 0x51, 0x87, 0x4a, 0xbb, 0x9a, 0x5d, 0x02, 0x2c, 0x69, 0x61, 0xac, 0xe4, 0xa4, 0x25, 0xf6, 0x35, 0xc5, 0xfc, 0x95,
0xca, 0x2f, 0x59, 0x0c, 0x27, 0xeb, 0x9c, 0x61, 0x0c, 0xd7, 0x6e, 0x61, 0x46, 0x63, 0xac, 0xa1, 0x5f, 0x53, 0x64, 0x7e, 0x2a, 0x5f, 0x53, 0xa8, 0xbf, 0x06, 0xb0, 0x61, 0x3b, 0xa4, 0x2f, 0x4a,
0x6d, 0xc9, 0xc3, 0xc8, 0x59, 0x4f, 0x19, 0x6b, 0x68, 0x5b, 0xd1, 0xcb, 0x5d, 0xf6, 0xba, 0x97, 0x55, 0x49, 0x29, 0x28, 0x0b, 0xf3, 0x64, 0x29, 0x34, 0x0c, 0xf3, 0x5a, 0x4d, 0xcc, 0x68, 0x8c,
0xbb, 0xd3, 0x14, 0xac, 0xc8, 0xd8, 0x35, 0x72, 0xbf, 0x5f, 0x86, 0xa2, 0x08, 0x63, 0x67, 0x09, 0x35, 0xb0, 0x2d, 0x79, 0x18, 0x39, 0x6b, 0x93, 0xb1, 0x06, 0xb6, 0x15, 0x3d, 0xfb, 0x65, 0xae,
0x1d, 0xff, 0x08, 0x40, 0xe0, 0xda, 0x2d, 0x5c, 0x10, 0xec, 0xb6, 0x85, 0x36, 0xa0, 0x24, 0xa1, 0x79, 0xf6, 0x53, 0x4f, 0x53, 0xb0, 0x2c, 0xc3, 0xdb, 0xc8, 0x43, 0x7f, 0x19, 0x0a, 0x22, 0xd2,
0xb1, 0x4f, 0xab, 0x40, 0x90, 0x3a, 0x6c, 0xf8, 0x5f, 0x85, 0xec, 0xbe, 0xed, 0x10, 0xb9, 0xd1, 0x9d, 0xe6, 0x7c, 0xfc, 0x0b, 0x02, 0x81, 0x6b, 0x35, 0x71, 0x5e, 0xb0, 0x5b, 0x16, 0x5a, 0x87,
0x13, 0x1d, 0xc0, 0xcc, 0x00, 0x5b, 0x0b, 0x98, 0xa3, 0x1b, 0x85, 0xb0, 0x50, 0xc7, 0xc7, 0x27, 0xa2, 0x84, 0xc6, 0xbe, 0xcb, 0x02, 0x41, 0x6a, 0xb3, 0xe1, 0x7f, 0x15, 0x32, 0xfb, 0xb6, 0x43,
0xd3, 0xce, 0xf8, 0xf8, 0x44, 0x06, 0x3a, 0x37, 0x3e, 0x81, 0x63, 0xe3, 0x13, 0x6c, 0x31, 0x3e, 0xe4, 0x46, 0x4f, 0x74, 0x00, 0x53, 0x03, 0x6c, 0xcd, 0x61, 0x8e, 0xae, 0xe7, 0xc3, 0x5a, 0x1e,
0x09, 0x8d, 0x8f, 0x4f, 0x90, 0x7e, 0x26, 0xe3, 0xdb, 0x86, 0x5b, 0x0d, 0xc7, 0x30, 0x0f, 0x1d, 0x1f, 0x9f, 0xcc, 0x4c, 0xe3, 0xe3, 0x13, 0x49, 0xea, 0xcc, 0xf8, 0x04, 0x8e, 0x8d, 0x4f, 0xb0,
0xdb, 0x0f, 0x88, 0x15, 0xf7, 0x18, 0x8f, 0x20, 0x7f, 0x21, 0xe8, 0xbc, 0xaa, 0xa2, 0x29, 0x91, 0xc5, 0xf8, 0x24, 0x34, 0x3e, 0x3e, 0x41, 0xfa, 0xa9, 0x8c, 0x6f, 0x1b, 0x6e, 0xd5, 0x1d, 0xc3,
0xea, 0xbf, 0xa6, 0xa0, 0xbc, 0x45, 0x0c, 0x27, 0x38, 0x98, 0x95, 0x8d, 0x02, 0xe2, 0x07, 0xf2, 0x3c, 0x74, 0x6c, 0x3f, 0x20, 0x56, 0xdc, 0x63, 0x3c, 0x82, 0xdc, 0x85, 0xb8, 0xf4, 0xaa, 0xa2,
0xb2, 0xe2, 0xbf, 0xd1, 0xd7, 0xa0, 0x10, 0xc5, 0x24, 0xd7, 0xbe, 0xcd, 0x45, 0x50, 0xf4, 0x18, 0xa7, 0x44, 0xaa, 0xff, 0x9e, 0x82, 0xd2, 0x16, 0x31, 0x9c, 0xe0, 0x60, 0x5a, 0x59, 0x0a, 0x88,
0x16, 0xd9, 0x19, 0xa3, 0x93, 0x30, 0xd9, 0xb9, 0xea, 0xd9, 0x47, 0x22, 0xd9, 0x25, 0xe3, 0x11, 0x1f, 0xc8, 0xfb, 0x8c, 0xff, 0x46, 0x5f, 0x83, 0x7c, 0x14, 0xb6, 0x5c, 0xfb, 0x7c, 0x17, 0x41,
0x1e, 0x84, 0xf0, 0xad, 0x94, 0xc3, 0x61, 0x13, 0xfd, 0x5f, 0x28, 0xf3, 0x57, 0x8b, 0x30, 0xe6, 0xd1, 0x63, 0x58, 0x60, 0x67, 0x8c, 0x8e, 0xc3, 0x7c, 0xe8, 0xaa, 0x97, 0x21, 0x89, 0x64, 0x97,
0xca, 0x5d, 0xa7, 0xb3, 0x24, 0x1e, 0x1e, 0x45, 0xbc, 0xf5, 0x87, 0x69, 0x58, 0xdd, 0x31, 0xa6, 0x8c, 0x47, 0x78, 0x9c, 0xc2, 0xb7, 0x52, 0x16, 0x87, 0x4d, 0xf4, 0xb3, 0x50, 0xe2, 0x0f, 0x1b,
0x7b, 0x44, 0xba, 0x0d, 0x62, 0x61, 0x62, 0x52, 0xcf, 0x42, 0xbd, 0xb8, 0xbb, 0xb9, 0xe2, 0x1d, 0x61, 0x58, 0x96, 0xbd, 0x4e, 0x67, 0x51, 0xbc, 0x4d, 0x8a, 0x90, 0xec, 0x07, 0x69, 0x58, 0xd9,
0x33, 0x49, 0x38, 0xd9, 0xeb, 0x84, 0x09, 0x58, 0x3a, 0x96, 0x80, 0xad, 0x42, 0xce, 0xa5, 0xae, 0x31, 0x26, 0x7b, 0x44, 0xba, 0x0d, 0x62, 0x61, 0x62, 0x52, 0xcf, 0x42, 0xdd, 0xb8, 0xbb, 0xb9,
0x49, 0xa4, 0x2f, 0x12, 0x0d, 0xf5, 0xb7, 0x52, 0x71, 0x5f, 0x53, 0x89, 0xde, 0x18, 0x79, 0x05, 0xe2, 0xa9, 0x33, 0x49, 0x38, 0xd9, 0xeb, 0x84, 0x39, 0x5a, 0x3a, 0x96, 0xa3, 0xad, 0x40, 0xd6,
0xaa, 0x43, 0x83, 0xa8, 0x3b, 0xf4, 0x11, 0x54, 0xfa, 0x5a, 0x13, 0x6b, 0x83, 0x46, 0xf7, 0xdb, 0xa5, 0xae, 0x49, 0xa4, 0x2f, 0x12, 0x0d, 0xf5, 0x77, 0x53, 0x71, 0x5f, 0x53, 0x8e, 0x9e, 0x21,
0x7a, 0xbf, 0xbe, 0xdd, 0xaf, 0x3f, 0x7a, 0xa0, 0xf7, 0xba, 0xdb, 0xdf, 0x79, 0xf8, 0xf8, 0xc1, 0x79, 0x91, 0xaa, 0x4d, 0x83, 0xa8, 0x3b, 0xf4, 0x11, 0x94, 0x7b, 0x5a, 0x03, 0x6b, 0xfd, 0x7a,
0xd7, 0x94, 0x54, 0xa5, 0x7a, 0x72, 0x5a, 0xbd, 0xd3, 0xa9, 0x37, 0xb7, 0xc5, 0x91, 0xd9, 0xa3, 0xe7, 0xdb, 0x7a, 0xaf, 0xb6, 0xdd, 0xab, 0x3d, 0x7a, 0xa0, 0x77, 0x3b, 0xdb, 0xdf, 0x79, 0xf8,
0x2f, 0xfb, 0x86, 0xe3, 0x1b, 0x8f, 0x1e, 0xf4, 0xa8, 0x33, 0x65, 0x18, 0xf4, 0x15, 0x40, 0x9b, 0xf8, 0xc1, 0xd7, 0x94, 0x54, 0xb9, 0x72, 0x72, 0x5a, 0xb9, 0xd3, 0xae, 0x35, 0xb6, 0xc5, 0x91,
0x1a, 0xee, 0x68, 0x03, 0x3d, 0x74, 0x68, 0xcd, 0x46, 0x53, 0x49, 0x8b, 0xb4, 0x66, 0x93, 0x78, 0xd9, 0xa3, 0x2f, 0x7a, 0x86, 0xe3, 0x1b, 0x8f, 0x1e, 0x74, 0xa9, 0x33, 0x61, 0x18, 0xf4, 0x15,
0x2e, 0x09, 0xea, 0x5a, 0xff, 0xe1, 0xa3, 0x27, 0xcd, 0x46, 0x93, 0x1d, 0x82, 0x72, 0xfc, 0x76, 0x40, 0x1b, 0x1a, 0x6e, 0x6b, 0x7d, 0x3d, 0x74, 0x68, 0x8d, 0x7a, 0x43, 0x49, 0x8b, 0xcc, 0x67,
0x8b, 0x5f, 0xda, 0xa9, 0x4b, 0x2f, 0xed, 0xd9, 0xdd, 0x9f, 0xbe, 0xe4, 0xee, 0xdf, 0x84, 0x55, 0x83, 0x78, 0x2e, 0x09, 0x6a, 0x5a, 0xef, 0xe1, 0xa3, 0x27, 0x8d, 0x7a, 0x83, 0x1d, 0x82, 0x52,
0xd3, 0xa3, 0xbe, 0xaf, 0xb3, 0x5c, 0x81, 0x58, 0x73, 0xd9, 0xc8, 0x17, 0xce, 0xcf, 0x36, 0x6e, 0xfc, 0x76, 0x8b, 0x5f, 0xda, 0xa9, 0x4b, 0x2f, 0xed, 0xe9, 0xdd, 0x9f, 0xbe, 0xe4, 0xee, 0xdf,
0x34, 0x19, 0xbf, 0xcf, 0xd9, 0x52, 0xfd, 0x0d, 0x33, 0x46, 0xe2, 0x3d, 0xa9, 0xbf, 0x9b, 0x61, 0x80, 0x15, 0xd3, 0xa3, 0xbe, 0xaf, 0xb3, 0x74, 0x82, 0x58, 0x33, 0x09, 0xcb, 0x17, 0xce, 0xcf,
0x61, 0x97, 0x7d, 0x64, 0x3b, 0x64, 0x48, 0x7c, 0xf4, 0x1c, 0x56, 0x4c, 0x8f, 0x58, 0x2c, 0x09, 0xd6, 0x6f, 0x34, 0x18, 0xbf, 0xc7, 0xd9, 0x52, 0xfd, 0x0d, 0x33, 0x46, 0xe2, 0x3d, 0xa9, 0x7f,
0x30, 0x9c, 0xf8, 0x07, 0xbd, 0xff, 0x27, 0x31, 0x02, 0x8a, 0x04, 0x6b, 0xcd, 0x48, 0xaa, 0x3f, 0x30, 0xcf, 0x22, 0x33, 0xfb, 0xc8, 0x76, 0xc8, 0x80, 0xf8, 0xe8, 0x19, 0x2c, 0x9b, 0x1e, 0xb1,
0x26, 0x26, 0x5e, 0x36, 0x2f, 0xb4, 0xd1, 0xc7, 0xb0, 0xe2, 0x13, 0xc7, 0x76, 0x27, 0x2f, 0x75, 0x58, 0x9e, 0x60, 0x38, 0xf1, 0xaf, 0x81, 0x7f, 0x26, 0x31, 0x48, 0x8a, 0x04, 0xab, 0x8d, 0x48,
0x93, 0xba, 0x01, 0x79, 0x19, 0xbe, 0xad, 0x5d, 0xa7, 0xb7, 0xaf, 0x6d, 0x33, 0xa9, 0xa6, 0x10, 0xaa, 0x37, 0x22, 0x26, 0x5e, 0x32, 0x2f, 0xb4, 0xd1, 0xc7, 0xb0, 0xec, 0x13, 0xc7, 0x76, 0xc7,
0x6a, 0xa0, 0xf3, 0xb3, 0x8d, 0xe5, 0x8b, 0x34, 0xbc, 0x2c, 0x35, 0xcb, 0x76, 0xa5, 0x03, 0xcb, 0x2f, 0x74, 0x93, 0xba, 0x01, 0x79, 0x11, 0x3e, 0xbf, 0x5d, 0xa7, 0xb7, 0xa7, 0x6d, 0x33, 0xa9,
0x17, 0x47, 0x83, 0x56, 0xa5, 0xa7, 0xe0, 0x0e, 0x27, 0xf4, 0x04, 0xe8, 0x0e, 0x14, 0x3c, 0x32, 0x86, 0x10, 0xaa, 0xa3, 0xf3, 0xb3, 0xf5, 0xa5, 0x8b, 0x34, 0xbc, 0x24, 0x35, 0xcb, 0x76, 0xb9,
0xb4, 0xfd, 0xc0, 0x13, 0x66, 0x66, 0x9c, 0x88, 0xc2, 0xfc, 0x84, 0xf8, 0xde, 0xaa, 0xf2, 0x4b, 0x0d, 0x4b, 0x17, 0x47, 0x83, 0x56, 0xa4, 0xa7, 0xe0, 0x0e, 0x27, 0xf4, 0x04, 0xe8, 0x0e, 0xe4,
0x30, 0xd7, 0x23, 0x3b, 0x5a, 0x96, 0xed, 0x1b, 0x7b, 0x52, 0x65, 0x01, 0x87, 0x4d, 0xb6, 0x63, 0x3d, 0x32, 0xb0, 0xfd, 0xc0, 0x13, 0x66, 0x66, 0x9c, 0x88, 0xc2, 0xfc, 0x84, 0xf8, 0x58, 0xab,
0x27, 0x7e, 0x14, 0xd6, 0xf1, 0xdf, 0x8c, 0xc6, 0xe3, 0x0f, 0xf9, 0xf5, 0x19, 0x8f, 0x30, 0xc2, 0xfc, 0x2b, 0x30, 0xd3, 0x23, 0x3b, 0x5a, 0x96, 0xed, 0x1b, 0x7b, 0x52, 0x65, 0x1e, 0x87, 0x4d,
0x8f, 0x5c, 0xb3, 0xb1, 0x8f, 0x5c, 0x57, 0x21, 0xe7, 0x90, 0x23, 0xe2, 0x88, 0x9b, 0x1f, 0x8b, 0xb6, 0x63, 0xc7, 0x7e, 0x14, 0xd6, 0xf1, 0xdf, 0x8c, 0xc6, 0xe3, 0x0f, 0xf9, 0xe9, 0x1a, 0x8f,
0xc6, 0xbd, 0x07, 0x50, 0x0e, 0xbf, 0xa6, 0xe4, 0x9f, 0x69, 0x14, 0x20, 0x3b, 0xa8, 0xf7, 0x9f, 0x30, 0xc2, 0x2f, 0x64, 0x33, 0xb1, 0x2f, 0x64, 0x57, 0x20, 0xeb, 0x90, 0x23, 0xe2, 0x88, 0x9b,
0x29, 0x0b, 0x08, 0x20, 0x2f, 0x76, 0xb2, 0x78, 0xf7, 0x6b, 0x76, 0x3b, 0x9b, 0xed, 0xa7, 0x4a, 0x1f, 0x8b, 0xc6, 0xbd, 0x07, 0x50, 0x0a, 0x3f, 0xc5, 0xe4, 0x5f, 0x72, 0xe4, 0x21, 0xd3, 0xaf,
0xfa, 0xde, 0x6f, 0x67, 0xa1, 0x18, 0xbd, 0x3c, 0xb1, 0x9b, 0xa6, 0xa3, 0xbd, 0x08, 0x8f, 0x42, 0xf5, 0x9e, 0x2a, 0x73, 0x08, 0x20, 0x27, 0x76, 0xb2, 0x78, 0x1a, 0x6c, 0x74, 0xda, 0x1b, 0xad,
0x44, 0xef, 0x90, 0x63, 0xf4, 0xc6, 0xac, 0x66, 0xf5, 0x91, 0x78, 0x6a, 0x8f, 0xd8, 0x61, 0xbd, 0x4d, 0x25, 0x7d, 0xef, 0xf7, 0x32, 0x50, 0x88, 0x1e, 0xa7, 0xd8, 0x4d, 0xd3, 0xd6, 0x9e, 0x87,
0xea, 0x2d, 0x28, 0xd4, 0xfb, 0xfd, 0xf6, 0xd3, 0x8e, 0xd6, 0x52, 0x3e, 0x4d, 0x55, 0xbe, 0x70, 0x47, 0x21, 0xa2, 0xb7, 0xc9, 0x31, 0x7a, 0x63, 0x5a, 0xd6, 0xfa, 0x48, 0xbc, 0xc6, 0x47, 0xec,
0x72, 0x5a, 0xbd, 0x11, 0x81, 0xea, 0xbe, 0xd8, 0x7c, 0x1c, 0xd5, 0x6c, 0x6a, 0xbd, 0x81, 0xd6, 0xb0, 0xa4, 0xf5, 0x16, 0xe4, 0x6b, 0xbd, 0x5e, 0x6b, 0xb3, 0xad, 0x35, 0x95, 0x4f, 0x53, 0xe5,
0x52, 0x3e, 0x49, 0xcf, 0xa3, 0x78, 0x0d, 0x86, 0x7f, 0x28, 0x54, 0xec, 0x61, 0xad, 0x57, 0xc7, 0x2f, 0x9c, 0x9c, 0x56, 0x6e, 0x44, 0xa0, 0x9a, 0x2f, 0x36, 0x1f, 0x47, 0x35, 0x1a, 0x5a, 0xb7,
0xac, 0xc3, 0x4f, 0xd3, 0xa2, 0x94, 0x36, 0xeb, 0xd1, 0x23, 0x63, 0xc3, 0x63, 0x7d, 0xae, 0x87, 0xaf, 0x35, 0x95, 0x4f, 0xd2, 0xb3, 0x28, 0x5e, 0xa6, 0xe1, 0x5f, 0x19, 0x15, 0xba, 0x58, 0xeb,
0x5f, 0xde, 0x7d, 0x92, 0x11, 0xdf, 0x92, 0xcc, 0x9e, 0xd1, 0x88, 0x61, 0x4d, 0x59, 0x6f, 0xfc, 0xd6, 0x30, 0xeb, 0xf0, 0xd3, 0xb4, 0xa8, 0xb6, 0x4d, 0x7b, 0xf4, 0xc8, 0xc8, 0xf0, 0x58, 0x9f,
0xfd, 0x92, 0xab, 0xc9, 0xcc, 0xf5, 0xd6, 0x67, 0x9e, 0x8a, 0x69, 0x51, 0x61, 0x11, 0xef, 0x76, 0x6b, 0xe1, 0x67, 0x7b, 0x9f, 0xcc, 0x8b, 0xcf, 0x4d, 0xa6, 0x2f, 0x6d, 0xc4, 0xb0, 0x26, 0xac,
0x3a, 0x0c, 0xf4, 0x49, 0x76, 0x6e, 0x76, 0x78, 0xe2, 0xb2, 0xfc, 0x1a, 0xdd, 0x85, 0x42, 0xf8, 0x37, 0xfe, 0xc4, 0xc9, 0xd5, 0xcc, 0xcf, 0xf4, 0xd6, 0x63, 0x9e, 0x8a, 0x69, 0x51, 0x61, 0x01,
0xbc, 0xa9, 0x7c, 0x9a, 0x9d, 0x1b, 0x50, 0x33, 0x7c, 0x9b, 0xe5, 0x1d, 0x6e, 0xed, 0x0e, 0xf8, 0xef, 0xb6, 0xdb, 0x0c, 0xf4, 0x49, 0x66, 0x66, 0x76, 0x78, 0xec, 0xb2, 0x14, 0x1c, 0xdd, 0x85,
0x87, 0x81, 0x9f, 0xe4, 0xe6, 0x3b, 0x3c, 0x98, 0x04, 0x16, 0x3d, 0x76, 0xd9, 0x99, 0x95, 0x55, 0x7c, 0xf8, 0x02, 0xaa, 0x7c, 0x9a, 0x99, 0x19, 0x50, 0x23, 0x7c, 0xbe, 0xe5, 0x1d, 0x6e, 0xed,
0xbb, 0x4f, 0x73, 0xc2, 0x17, 0x44, 0x18, 0x59, 0xb2, 0x7b, 0x0b, 0x0a, 0x58, 0xfb, 0x96, 0xf8, 0xf6, 0xf9, 0x57, 0x85, 0x9f, 0x64, 0x67, 0x3b, 0x3c, 0x18, 0x07, 0x16, 0x3d, 0x76, 0xd9, 0x99,
0x86, 0xf0, 0x93, 0xfc, 0x9c, 0x1e, 0x4c, 0x3e, 0x26, 0x26, 0xeb, 0xad, 0x0a, 0x79, 0xac, 0xed, 0x95, 0x85, 0xbd, 0x4f, 0xb3, 0xc2, 0x17, 0x44, 0x18, 0x59, 0xd5, 0x7b, 0x0b, 0xf2, 0x58, 0xfb,
0x74, 0x9f, 0x6b, 0xca, 0xef, 0xe5, 0xe7, 0xf4, 0x60, 0x32, 0xa2, 0xfc, 0x4b, 0xaa, 0x42, 0x17, 0x96, 0xf8, 0x00, 0xf1, 0x93, 0xdc, 0x8c, 0x1e, 0x4c, 0x3e, 0x26, 0x26, 0xeb, 0xad, 0x02, 0x39,
0xf7, 0xb6, 0xea, 0x7c, 0x51, 0xe6, 0xf5, 0x74, 0xbd, 0xf1, 0x81, 0xe1, 0x12, 0x6b, 0xf6, 0x3d, 0xac, 0xed, 0x74, 0x9e, 0x69, 0xca, 0x1f, 0xe6, 0x66, 0xf4, 0x60, 0x32, 0xa4, 0xfc, 0x33, 0xac,
0x4d, 0xc4, 0xba, 0xf7, 0x73, 0x50, 0x08, 0x23, 0x5d, 0xb4, 0x0e, 0xf9, 0x17, 0x5d, 0xfc, 0x4c, 0x7c, 0x07, 0x77, 0xb7, 0x6a, 0x7c, 0x51, 0x66, 0xf5, 0x74, 0xbc, 0xd1, 0x81, 0xe1, 0x12, 0x6b,
0xc3, 0xca, 0x82, 0xb0, 0x72, 0xc8, 0x79, 0x21, 0x72, 0x94, 0x2a, 0x2c, 0xee, 0xd4, 0x3b, 0xf5, 0xfa, 0xc9, 0x4d, 0xc4, 0xba, 0xf7, 0x0b, 0x90, 0x0f, 0x23, 0x5d, 0xb4, 0x06, 0xb9, 0xe7, 0x1d,
0xa7, 0x1a, 0x0e, 0x4b, 0xee, 0x21, 0x40, 0x86, 0x6b, 0x15, 0x45, 0x76, 0x10, 0xe9, 0x6c, 0xac, 0xfc, 0x54, 0xc3, 0xca, 0x9c, 0xb0, 0x72, 0xc8, 0x79, 0x2e, 0x72, 0x94, 0x0a, 0x2c, 0xec, 0xd4,
0xfd, 0xf0, 0x27, 0xeb, 0x0b, 0x3f, 0xfe, 0xc9, 0xfa, 0xc2, 0x27, 0xe7, 0xeb, 0xa9, 0x1f, 0x9e, 0xda, 0xb5, 0x4d, 0x0d, 0x87, 0x55, 0xf9, 0x10, 0x20, 0xc3, 0xb5, 0xb2, 0x22, 0x3b, 0x88, 0x74,
0xaf, 0xa7, 0xfe, 0xf6, 0x7c, 0x3d, 0xf5, 0x2f, 0xe7, 0xeb, 0xa9, 0xbd, 0x3c, 0xbf, 0x54, 0x1e, 0xd6, 0x57, 0x7f, 0xf8, 0x93, 0xb5, 0xb9, 0x1f, 0xff, 0x64, 0x6d, 0xee, 0x93, 0xf3, 0xb5, 0xd4,
0xff, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xac, 0xef, 0xe8, 0x11, 0x9e, 0x32, 0x00, 0x00, 0x0f, 0xcf, 0xd7, 0x52, 0x7f, 0x77, 0xbe, 0x96, 0xfa, 0xb7, 0xf3, 0xb5, 0xd4, 0x5e, 0x8e, 0x5f,
0x2a, 0x8f, 0xff, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x5a, 0x0b, 0x70, 0x5e, 0xdb, 0x32, 0x00, 0x00,
} }

View File

@ -277,6 +277,8 @@ message Mount {
// Mode of the tmpfs upon creation // Mode of the tmpfs upon creation
uint32 mode = 2 [(gogoproto.customtype) = "os.FileMode", (gogoproto.nullable) = false]; uint32 mode = 2 [(gogoproto.customtype) = "os.FileMode", (gogoproto.nullable) = false];
// Options passed to tmpfs mount
string options = 3;
// TODO(stevvooe): There are several more tmpfs flags, specified in the // TODO(stevvooe): There are several more tmpfs flags, specified in the
// daemon, that are accepted. Only the most basic are added for now. // daemon, that are accepted. Only the most basic are added for now.
// //
@ -862,6 +864,9 @@ message Placement {
// This field is used in the platform filter for scheduling. If empty, // This field is used in the platform filter for scheduling. If empty,
// then the platform filter is off, meaning there are no scheduling restrictions. // then the platform filter is off, meaning there are no scheduling restrictions.
repeated Platform platforms = 3; repeated Platform platforms = 3;
// MaxReplicas specifies the limit for maximum number of replicas running on one node.
uint64 max_replicas = 4;
} }
// JoinToken contains the join tokens for workers and managers. // JoinToken contains the join tokens for workers and managers.

View File

@ -1,10 +1,9 @@
package raftselector package raftselector
import ( import (
"context"
"errors" "errors"
"golang.org/x/net/context"
"google.golang.org/grpc" "google.golang.org/grpc"
) )

View File

@ -33,7 +33,7 @@ github.com/docker/go-connections 7beb39f0b969b075d1325fecb092faf27fd357b6
github.com/docker/go-events 9461782956ad83b30282bf90e31fa6a70c255ba9 github.com/docker/go-events 9461782956ad83b30282bf90e31fa6a70c255ba9
github.com/docker/go-units 9e638d38cf6977a37a8ea0078f3ee75a7cdb2dd1 github.com/docker/go-units 9e638d38cf6977a37a8ea0078f3ee75a7cdb2dd1
github.com/docker/libkv 1d8431073ae03cdaedb198a89722f3aab6d418ef github.com/docker/libkv 1d8431073ae03cdaedb198a89722f3aab6d418ef
github.com/docker/libnetwork a79d3687931697244b8e03485bf7b2042f8ec6b6 github.com/docker/libnetwork 1f28166bb386cf9223d2d00a28382b0e474be314
github.com/opencontainers/runc ad0f5255060d36872be04de22f8731f38ef2d7b1 github.com/opencontainers/runc ad0f5255060d36872be04de22f8731f38ef2d7b1
github.com/opencontainers/go-digest v1.0.0-rc1 github.com/opencontainers/go-digest v1.0.0-rc1
github.com/opencontainers/image-spec v1.0.1 github.com/opencontainers/image-spec v1.0.1